我想在Try / Catch块中使用If / Else语句。以下是我的代码。 在这里,我能够在脚本失败时捕获错误,但是当它成功时我想在.csv文件中标记日期时间但它不起作用。请帮忙。
Try
{
$hostcomputer = hostname
$IP = "10.x.x.x"
$pso = New - PSSessionOption - SkipCACheck - SkipRevocationCheck - SkipCNCheck: $TRUE - ErrorAction Stop# $Session = New - PSSession - ConfigurationName Microsoft.Exchange - ConnectionUri https: //mail.Test.com/powershell/?ExchClientVer=15.0 -Credential (Get-Credential) -Authentication Basic –AllowRedirection –SessionOption (New-PSSessionOption –SkipRevocationCheck)
$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 FromAddress @Test.com - To "ToAddress@Test.com", "ToAddress2@Test.com" - Subject "Test - RPS Not Working" - SmtpServer smtp.TEST.net - Body "Error generated on $hostcomputer = $IP. The Error Message was:- $ErrorMessage. AdditionalInfo:--$FailedItem. --NOTE: This is very first error and you may require to check and diagnose if any other issue."
$Text = "Connection Failed"###
You have to create.csv file manually and name the column as 'DC2'
$Text | select @ {
l = 'DC2';
e = {
$_
}
} | Export - Csv D: \Output.csv - append
}
$Time = Get - Date
if (!$Error)
{
$Time | select @ {l = 'DC2'; e = {$_.DateTime}} | Export - Csv D: \Output.csv - append
}
答案 0 :(得分:1)
您应该使用最终阻止您的要求。因此,无论是try还是catch的结果,都应该始终运行 Finally 块。
所以 而不是:
$Time=Get-Date
if (!$Error) {
$Time | select @{l='DC2';e={$_.DateTime}} | Export-Csv D:\Output.csv -append
}
执行此操作:
Finally
{
$Time=Get-Date
if (!$Error) {
$Time | select @{l='DC2';e={$_.DateTime}} | Export-Csv D:\Output.csv -append
}
}
希望它有所帮助...
答案 1 :(得分:1)
如果您只想在csv文件中放置日期时间戳,如果您在try块中成功传递了语句。 您可以将标记作为try块中的最后一个命令。
这是一个细分:
Try块中的错误:每个语句都会按顺序执行,直到出现错误。
然后不会执行Try块中的其余语句。
而是执行Catch块。
Try块中没有错误: Try块中的所有语句都将被执行 Catch块将不会被执行。
最后一块 将永远执行!! 您通常使用此块进行清理。 如果您打开与数据库的连接或在try块中打开一个文件。 你关闭了最后的连接或文件,所以你确定你正确地关闭了所有东西。
<强>提示强> 如果您想确保捕获Try块中的每个错误,最好使用如下的somting:
Try
{
$OldErrorActionPreference = $ErrorActionPreference
$ErrorActionPreference = 'Stop'
Statement 1
Statement 2
Statement 3
Statement ...
}
Catch
{
Errorhandling
}
Finally
{
$ErrorActionPreference = $OldErrorActionPreference
}
或者你必须使用&#34; -ErrorAction Stop&#34;参数与每个重要的陈述。
您可以找到有关错误发送Here
的更多信息