6
Có cách nào để chạy dưới đây để chạy song song (đa luồng) không? Tôi có khoảng 200 máy chủ cần chạy và đang tự hỏi liệu có cách nào kiểm tra 10 máy chủ cùng một lúc chứ không phải từng lần một ... WMI rất chậm trong việc kiểm tra cái này cùng một lúc.Làm cách nào để thêm đa luồng?
clear
Write-Host "Script to Check if Server is Alive and Simple WMI Check"
$servers = Get-Content -Path c:\Temp\Servers.txt
foreach($server in $servers)
{
if (Test-Connection -ComputerName $server -Quiet)
{
$wmi = (Get-WmiObject -Class Win32_ComputerSystem -ComputerName $server).Name
Write-Host "$server responds: WMI reports the name is: $wmi"
}
else
{
Write-Host "***$server ERROR - Not responding***"
}
}
nếu bạn muốn được nâng cao hơn với đề kiểm soát thử này [link] (http://blogs.msdn.com/b/powershell/archive/2011 /04/04/scaling-and-queuing-powershell-background-jobs.aspx) – jbockle
cảm ơn rất nhiều !!!! Đây là SOOOOO NHANH NGAY BÂY GIỜ !!! Cảm ơn rất nhiều vì chuyện này. – lara400
fyi cho những người không biết lệnh ForEach-Object có bí danh% và foreach. Ngoài ra $ _ về cơ bản có nghĩa là đối tượng này. Nó hoạt động rất giống với dòng 'foreach ($ server trong $ servers)' ngoại trừ mã jbockle vòng lặp foreach chỉ là bắt đầu công việc (tất cả 200ish) và không thực hiện xử lý bên trong vòng lặp 1 của 1. – BeowulfNode42