Оптимизировать сценарий поиска Powershell - PullRequest
0 голосов
/ 02 мая 2018

Я написал следующий скрипт для поиска 9 каталогов в моей сети. Он работает по мере необходимости, но безбожно медленно (я полагаю, из-за количества мест, куда он идет). Мой вопрос к вам, так как я не очень опытен в PowerShell, есть ли способ что-то «упростить», чтобы ускорить конечный результат? Все эти источники кажутся довольно грязными.

Любая помощь будет принята с благодарностью.

$source1 = "\\Server_IP\d$\Folder\Err"
$source2 = "\\Server_IP\d$\Folder\Err"
$source3 = "\\Server_IP\d$\Folder\Err"
$source4 = "\\Server_IP\d$\Folder\Err"
$source5 = "\\Server_IP\d$\Folder\Err"
$source6 = "\\Server_IP\d$\Folder\Err"
$source7 = "\\Server_IP\d$\Folder\Err"
$source8 = "\\Server_IP\d$\Folder\Err"
$source9 = "\\Server_IP\d$\Folder\Err"

Get-Childitem –Path $source, $Source2, $Source3, $Source4, $Source5, $Source6 , $Source7, $Source8, $Source9 -Include *SEARCHITEM* -Recurse -ErrorAction SilentlyContinue

1 Ответ

0 голосов
/ 02 мая 2018

Вы можете использовать Start-Job для ускорения отдельных фоновых процессов для выполнения задания для каждого $source:

$Sources = @(
    "\\Server_IP\d$\Folder\Err"
    "\\Server_IP\d$\Folder\Err"
    "\\Server_IP\d$\Folder\Err"
    "\\Server_IP\d$\Folder\Err"
    "\\Server_IP\d$\Folder\Err"
    "\\Server_IP\d$\Folder\Err"
    "\\Server_IP\d$\Folder\Err"
    "\\Server_IP\d$\Folder\Err"
    "\\Server_IP\d$\Folder\Err"
)
$Files = $Sources |ForEach-Object {
  Start-Job -ScriptBlock { 
    $args |Get-ChildItem -Filter *SEARCHITEM* -Recurse -ErrorAction SilentlyContinue 
  } -ArgumentList $_.FullName
} |Wait-Job |Receive-Job

$Files теперь будет содержать соответствующие файлы из всех мест в $sources

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...