У меня есть примерный скрипт 1000 aprox, который проходит через все серверы в AD. Скрипт связывает каждый сервер и выполняет кучу WMI-запросов, если ping = ok. Мой скрипт хранит результаты в хэш-таблице, которую я выводил в CSV в конце скрипта. Это работает, но это sloooow .. Мы говорим около двух часов. Я занимаюсь этим более эффективным, и я думаю, что-азбука звучит как хорошая идея.Создание сценария более эффективно с -asjob
Но могу ли я сделать это как совместные задания? Будет ли мой сервер обрабатывать нагрузку? А есть способ сделать это?
Надеясь на входе в то время как я жду моего сценария для запуска это цикл ..
EDIT
Мое мнение таково, что сценарий ждет тест-соединения (пинг), чтобы вернуть истинный или false. Я хотел бы запускать несколько пинов одновременно.
EDIT 2
(. Примечание:.Я начал отдельный вопрос, как я чувствую, мой первоначальный вопрос был дан ответ я включил мой текущий код в любом случае, как это было предложено Спасибо всем за качка в! new question here!)
Спасибо всем за помощь! Меня попросили перечислить мой код, чтобы предоставить реальный пример того, что я пытаюсь сделать.
Это небольшая, но действует выдержка из моего кода:
# List 4 servers (for testing)
$servers = Get-QADComputer -sizelimit 4 -WarningAction SilentlyContinue -OSName *server*,*hyper*
# Create list
$serverlistlist = @()
# Loop servers
foreach($server in $servers) {
# Fetch IP
$ipaddress = [System.Net.Dns]::GetHostAddresses($Server.name)| select-object IPAddressToString -expandproperty IPAddressToString
# Gather OSName through WMI
$OSName = (Get-WmiObject Win32_OperatingSystem -ComputerName $server.name).caption
# Ping the server
if (Test-Connection -ComputerName $server.name -count 1 -Quiet) {
$reachable = "Yes"
}
# Save info about server
$serverInfo = New-Object -TypeName PSObject -Property @{
SystemName = ($server.name).ToLower()
IPAddress = $IPAddress
OSName = $OSName
}
$serverlistlist += $serverinfo | Select-Object SystemName,IPAddress,OSName
}
Примечания: Я вывод $ SERVERLIST в CSV-файл в конце сценария я список APROX 500 серверов в полный сценарий.
Прежде всего, необходимо определить, какие части медленно, а затем разместить те в вашем вопросе, чтобы мы могли предложить улучшения. –
Если вы используете 'Test-Connection' на каждой итерации цикла, и если это самая медленная вещь, вам нужно будет немного переработать логику для запуска тестов ping одновременно, потому что вам сначала нужен список серверов, тогда вы можете одновременно тестировать соединения с ними. Вам не нужно делать все серверы одновременно, вы можете сказать, что 10-20 за раз. –
Спасибо Энди! Можно ли переделать весь мой foreach в списке серверов на начальную работу? Или это было бы не так умно? :) – Sune