テスト接続が断続的リソース・エラーの不足で失敗します。その結果PowerShellはテスト・コネクションは、リソース不足のため失敗した
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
リストをテストする必要があるとき、それは信頼性が高く、かなり役に立ちませんループ内のコンピュータの数。この機能を確実に使用するための修正プログラム、代替方法、または回避策はありますか?
これは私の現在の解決策ですが、依然として十分な信頼性がありません(時には5回連続して失敗することがあります)。すべての遅延と再試行のために永遠にかかることがあります。
$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}
}
通常のping(PING.EXEは)毎回作品なので、PowerShellを使用しているを解析するための良い方法があるかどう(IPが応答しているものを、上下にホストまたは)、理想的なソリューションのように思えることが、私はちょうど働くものが必要なので、私はアイデアを公開しています。
まあ、それはかなり奇妙に見えるので、do-whileループを実装することができますが、根本的な原因と戦うことをお勧めします。あなたはそれを修正しようとしましたか? '/ sfc scannow'は少なくとも?何か?PS5にアップグレードしますか? – 4c74356b41
実際にこれを見たことがありますが、修正プログラムを見つけることができませんでしたが、再起動するとiircが一般的にそれを修正します(私は間違っている可能性があり、1年以上経過しています)。 PSv2に影響を与えるだけの問題を覚えているようだ(再び間違っているかもしれない) –
'-Quiet'や' -ErrorAction SilentlyContinue'、あるいはその両方を使うのはいかがですか?これは、リモートホスト上の 'WMI'障害によって引き起こされる可能性があります。そして '-Count 1 'は必ずしも信頼できるとは限りません。私の通常の行: 'if(Test-Connection $ host -Quiet -Count 2 -EA 0){#...}'は、チャームのように動作します。 – sodawillow