У меня есть функция, которая позволяет мне записывать путь к файлам в текстовый файл в зависимости от вашего ввода. Звучит запутанно, но я не знаю, как лучше выразиться, поэтому вот функция:
Function writeAllPaths([string]$fromFolder,[string]$filter,[string]$printfile) {
Get-ChildItem -Path $fromFolder -Recurse $filter | Select-Object -Property FullName > $printfile
}
Первый аргумент — папка, из которой вы начинаете поиск.
Второй аргумент — фильтр. Например, *.zip выведет список всех zip-файлов. Третий аргумент, вы должны указать, где будет находиться текстовый файл.
Пример использования: writeAllPaths c:\ *.zip c:\allZips.txt
Дело в том, что когда я это делаю, Powershell не будет принимать команды, пока это не будет сделано. Что не очень продуктивно. Есть ли способ запустить это в фоновом режиме при запуске. И желательно, дайте небольшое сообщение, когда это будет сделано. Я мог бы открыть любой файл, который создается в середине процесса...
Кроме того, у меня Windows 7, поэтому я предполагаю, что у меня Powershell 2.0.
Да, я не уверен в этом :p
РЕДАКТИРОВАТЬ:
Я использовал Start-Job, как было предложено, следующим образом:
Function writeAllPaths([string]$fromFolder,[string]$filter,[string]$printfile) {
Start-Job -ScriptBlock {Get-ChildItem -Path $fromFolder -Recurse $filter | Select-Object -Property FullName > $printfile}
}
Однако файл не создается. Старая функция создает файл.
EDIT2: было бы предпочтительнее иметь эту функцию в моем профиле Powershell. Таким образом, я могу выполнять его, когда захочу, вместо того, чтобы загружать конкретный файл ps1 каждый раз при загрузке Powershell.
Дополнительную информацию о профиле Powershell можно найти здесь. Вы можете вызвать свой собственный профиль, набрав: notepad $profile