try
ブロックのコード最後に3つのコマンドを複数回実行してから、catch
とfinally
ブロックを実行します。この5番、6番、7番のラインを置くことができれば、一種の再試行を意味します。 5行目が3回実行され、失敗した場合はcatch
とfinally
に進みます。 3回第五行をしようとするTRYブロックで複数回コマンドを再試行するには
try {
$hostcomputer = hostname
$IP = "10.x.x.x"
$pso = New-PSSessionOption -SkipCACheck -SkipRevocationCheck -SkipCNCheck:$TRUE -ErrorAction Stop
$session = New-PSSession -Authentication Negotiate -ConnectionUri https://mail.test.com/powershell/?ExchClientVer=15.1 -ConfigurationName microsoft.exchange -SessionOption $pso -ErrorAction Stop
Import-PSSession $session -AllowClobber -ErrorAction Stop
} catch {
$ErrorMessage = $_.Exception.Message
$FailedItem = $Error
Send-MailMessage -From [email protected] -To "[email protected]" -Subject "DC2 - RPS Not Working" -SmtpServer smtp.test.net -Body "Error generated on $hostcomputer = $IP. The Error Message was:- $ErrorMessage."
$Text = "Connection Failed"
# You have to create .csv file manually and name the column as 'DC2'
$Text | select @{l='DC2';e={$_}} | Export-Csv D:\DC2.csv -Append
} finally {
$Time=Get-Date
if (!$Error) {
$Time | select @{l='DC2';e={$_.DateTime}} | Export-Csv D:\DC2.csv -Append
}
}
ここで「リトライ」機能の非常にエレガントなバージョンがあります:[このような何かリンク](https://blogs.endjin.com/2014/07/how-to-retry-commands-in-powershell/)。私は答えとしてそれを掲示するだろうが、私はその人の仕事のために信用を得たくない。自分の "再試行"関数を書いていたのですが、文字列ではなくスクリプトブロックとしてコードを受け入れ、チェックする独自のテストスクリプトを指定する場合は "成功条件"型パラメータを追加しますそれが成功したかどうか。 –