Test-kết nối liên tục không thành công với một thiếu lỗi nguồn:Powershell - Test-Kết nối thất bại do thiếu nguồn lực
test-connection : Testing connection to computer 'SOMESERVER' failed: Error due to lack of resources
At line:1 char:45
+ ... ($server in $ServersNonProd.Name) { test-connection $server -Count 1}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (SOMESERVER:String) [Test-Connection], PingException
+ FullyQualifiedErrorId : TestConnectionException,Microsoft.PowerShell.Commands.TestConnectionCommand
Kết quả là, nó không phải là đáng tin cậy và khá vô dụng khi bạn cần phải kiểm tra một danh sách của máy tính trong một vòng lặp. Có cách khắc phục, thay thế hoặc giải pháp để có được chức năng này đáng tin cậy không?
Đây là giải pháp hiện tại của tôi, nhưng nó vẫn không đủ tin cậy (đôi khi họ vẫn thất bại 5 lần liên tiếp) và phải mất mãi mãi vì tất cả sự chậm trễ và thử lại.
$Servers = Import-CSV -Path C:\Temp\Servers.csv
$result = foreach ($Name in $Servers.FQDN) {
$IP = $null
if (Resolve-DNSName $Name -ErrorAction SilentlyContinue) {
$IP = (Test-Connection -Count 1 -ComputerName $Name -ErrorAction SilentlyContinue).IPv4Address
if ($IP -eq $null) {
Start-Sleep -Milliseconds 100
$IP = (Test-Connection -Count 1 -ComputerName $Name -ErrorAction SilentlyContinue).IPv4Address
}
if ($IP -eq $null) {
Start-Sleep -Milliseconds 200
$IP = (Test-Connection -Count 1 -ComputerName $Name -ErrorAction SilentlyContinue).IPv4Address
}
if ($IP -eq $null) {
Start-Sleep -Milliseconds 300
$IP = (Test-Connection -Count 1 -ComputerName $Name -ErrorAction SilentlyContinue).IPv4Address
}
if ($IP -eq $null) {
Start-Sleep -Milliseconds 400
$IP = (Test-Connection -Count 1 -ComputerName $Name -ErrorAction SilentlyContinue).IPv4Address
}
}
new-object psobject -Property @{FQDN = $Name; "IP Address" = $IP}
}
Một ping bình thường (ping.exe) hoạt động mọi thời gian, vì vậy nếu có một cách tốt để phân tích rằng với PowerShell (đăng cai lên hoặc xuống, những gì IP được đáp ứng), mà có vẻ như là giải pháp lý tưởng, nhưng Tôi chỉ cần một cái gì đó mà làm việc, vì vậy tôi mở cửa cho ý tưởng.
tốt, có vẻ khá lạ, do đó, để làm việc xung quanh bạn có thể triển khai vòng lặp 'do-while', nhưng tôi khuyên bạn nên chống lại nguyên nhân gốc rễ. Giống như những gì bạn đã cố gắng sửa chữa nó? '/ sfc scannow' ít nhất? có gì không?Nâng cấp lên PS5? – 4c74356b41
Đã thực sự thấy điều này trước đây nhưng không bao giờ có thể xác định vị trí sửa chữa, mặc dù iirc khởi động lại nói chung sẽ sửa nó (tôi có thể sai, đã hơn một năm) Ngoài ra bạn đang chạy phiên bản PS nào? dường như để nhớ vấn đề chỉ ảnh hưởng đến PSv2 (một lần nữa, có thể là sai lầm) –
Làm thế nào về việc sử dụng '-Quiet' hoặc' -ErrorAction SilentlyContinue' hoặc cả hai? Điều này có thể do lỗi 'WMI' trên máy chủ từ xa gây ra. Và '-Count 1' không phải lúc nào cũng đáng tin cậy. Dòng thông thường của tôi: 'if (Test-Connection $ host -Quiet -Count 2 -EA 0) {# ...}', hoạt động như một nét duyên dáng. – sodawillow