Использование сценария в PowerShell для рекурсивного прохождения всех папок на нескольких устройствах NAS для отображения каждой папки с ее полным путем в файле Out-File
. Используя скрипт Get-FolderEntry
, я нашел здесь.
Поскольку у меня есть несколько блоков NAS с более чем 260 символами в имени файла/длине пути, я решил использовать многопоточность для ускорения процесса.
Код:
. C:\Users\mdevogea\Downloads\Get-FolderEntry.ps1
# list with the servers
$Computers = Get-Content C:\Users\mdevogea\Desktop\servers.txt
# scriptblock calling on get-FolderEntry
$sb = {
param ($Computer, $fname)
C:\Users\mdevogea\Downloads\Get-FolderEntry.ps1 -Path $Computer |
fl | Out-File -Append -Width 1000 -FilePath $fname
}
foreach($Computer in $Computers)
{
$name = $Computer.Replace("\", "")
$fname = $("C:\Users\mdevogea\Desktop\" + $name + ".txt")
#Get-FolderEntry -Path $Computer | fl | Out-File -Append -Width 1000 $fname
$res = Start-Job $sb -ArgumentList $Computer, $fname
}
# Wait for all jobs
Get-Job
while(Get-Job -State "Running")
{
Write-Host "Running..."
Start-Sleep 2
}
# Get all job results
Get-Job | Receive-Job | Out-GridView
Уже:
Я либо получаю пустые файлы с правильным названием файла.
Я получаю правильный именованный файл с кодом
Get-FolderEntry
в нем.Я получаю ошибки в зависимости от того, что я передаю в блок сценария.
Короче говоря, это, наверное, глупо, но вы этого не видите.
Get-FolderEntry.ps1
, а затем вызовите функциюGet-FolderEntry
. Если это не поможет, покажите ошибки, которые вы получаете. - person Ansgar Wiechers   schedule 13.12.2016Param()
должен быть первым. Затем точка-источник. И вы все еще используете скрипт вместо функции. - person Ansgar Wiechers   schedule 13.12.2016