Pingを実行してホスト名がアップかダウンかを確認する必要があるホスト名の大きなリストがあります。スクリプティングはあまり得意ではありませんが、これをうまく理解することができました。
$names = Get-content "hnames.txt"
foreach ($name in $names){
if (Test-Connection -ComputerName $name -Count 1 -ErrorAction SilentlyContinue){
Write-Host "$name is up" -ForegroundColor Green
}
else{
Write-Host "$name is down" -ForegroundColor Red
}
}
これにより、必要なものが得られますが、これらの結果をcsvファイルに書き出す必要があり、その方法がわかりません。
助けてください!
代わりに次のコードを使用して(書き込みホストの呼び出しをCSV形式に変更しただけです)、「PowerShell.exe script.ps> output.csv」で実行できます。hnames.txtを含むフォルダーから実行する必要があります。 、または単に「hnames.txt」を完全なパスに変更します。
$names = Get-content "hnames.txt"
foreach ($name in $names){
if (Test-Connection -ComputerName $name -Count 1 -ErrorAction SilentlyContinue){
Write-Host "$name,up"
}
else{
Write-Host "$name,down"
}
}
追伸 Out-File Cmdlet を使用してCSVファイルを作成することもできます
私はPowershellの完全な初心者なので、PCのリストのアップ/ダウンステータスをすばやく簡単にチェックする方法が必要だったので、これを学習タスクとして取り入れました。これらの微調整は、画面とtxtファイルにきれいに出力するために必要でした
$Output= @()
$names = Get-content "hnames.txt"
foreach ($name in $names){
if (Test-Connection -ComputerName $name -Count 1 -ErrorAction SilentlyContinue){
$Output+= "$name,up"
Write-Host "$Name,up"
}
else{
$Output+= "$name,down"
Write-Host "$Name,down"
}
}
$Output | Out-file "C:\support\result.csv"
私はこのようにします。コンピューターのリストと-asjobの使用は非常にうまく機能します。ホストが稼働している場合、Responsetimeプロパティはnull以外になります。
$names = Get-content hnames.txt
test-connection $names -asjob -count 1 | recieve-job -wait -auto
$Output= @()
$names = Get-Content ".\input\Servers.txt"
foreach ($name in $names){
if (Test-Connection -Delay 15 -ComputerName $name -Count 1 -ErrorAction SilentlyContinue){
$Output+= "$name,up"
Write-Host "$Name,up" -ForegroundColor Green
}
else{
$Output+= "$name,down"
Write-Host "$Name,down" -ForegroundColor Red
}
}
$Output | Out-file ".\output\result.csv"