Test-Connectionコマンドレットを使うとPingコマンドを直接使うよりも簡単に結果を確認することが出来る(文字列解析が不要)
Quietスイッチを指定すると単純にPingが成功したか失敗したかの結果だけを返してくれる。
以下の例では直接Server名を指定するパターンと、Server名の入ったテキストファイルを用意するパターンに対応してみた。
結果はそのままテキストで表示してもよいが、ここではHTML形式にして表示させている。
(HTML化が本題ではないのでごく簡単な表示で済ませている)
また、場合によってはこのHTMLテキストをPowerShell: ◆メールを送る(Send-MailMessage)を使って管理者にメールするなんてのも良いだろう。
PowerShell: ◆コメントベースのヘルプを記述するで書いたコメントも先頭に付けてみた。
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 | <# .SYNOPSIS サーバーの死活確認を行う .DESCRIPTION Serversに指定したServerまたはinputpathで指定したテキストファイル中のServerに 対してPingを送信しその死活を確認する。 結果は指定されたパスにHTML形式で出力する。 .NOTES inputpath、serversともに指定しないとエラーとなる。 .LINK http://www.powershell.com .EXAMPLE Ping.ps1 -inputpath w:\pcname.txt .EXAMPLE Ping.ps1 -servers vista3,goemon #> param( [string]$inputpath, [string[]]$Servers, [string]$outputpath="W:\servers.htm" ) if($inputpath){ $pcname = Get-Content $inputpath }elseif($Servers){ $pcname = $servers }else{ Write-Warning "Please Specify Params" exit } $isalive = @(Test-Connection -ComputerName $pcname -Quiet) $result = 0..($pcname.Count - 1) | %{$pcname[$_] + "," + $isalive[$_]} $head = (Get-Date).ToString() + " サーバー死活確認" $html = $result | ConvertFrom-Csv -Header "PC名","IsAlive" | ConvertTo-Html -Head $head -Title "Servers" $html | Out-File $outputpath |
0 件のコメント:
コメントを投稿