JLA*_*JLA 1 powershell exception try-catch
我有可靠地生成异常的代码.这是预期的,因此当我转储$ error变量以查找实际问题时,我不希望它出现在我的脚本末尾.
第1步是找到这个例外并处理它,对吧?我做不到那么远.这是我得到的:
Function Add-PowerShellSnapIn($SnapInName){
Try{
if ((Get-PSSnapin -Name $SnapInName) -eq $null){
Write-Warning "SnapIn Is Not Already Loaded"
}
}Catch [System.Exception]{
Write-Warning "Error Caught"
}
}
Add-PowerShellSnapIn -SnapInName "Microsoft.Exchange.Management.PowerShell.Admin"
Run Code Online (Sandbox Code Playgroud)
如果我运行此代码,我可以看到异常,但我从未看到我的小"写 - 警告"测试消息,以指示Catch块捕获异常.我必须在这里遗漏一些东西.以下是我看到的例外情况:
Get-PSSnapin:找不到与模式"Microsoft.Exchange.Management.PowerShell.Admin"匹配的Windows PowerShell管理单元.检查模式,然后再次尝试该命令.在C:\ users\myuser\Desktop\Test.ps1:4 char:20 + if((Get-PSSnapin <<<< -Name $ SnapInName)-eq $ null){+ CategoryInfo:InvalidArgument:(Microsoft.Excha. ..owerShell.Admin:String)[Get-PSSnapin],PSArgumentException + FullyQualifiedErrorId:NoPSSnapInsFound,Microsoft.PowerShell.Commands.GetPSSnapinCommand
编辑:提前感谢任何花时间帮助我的人!
您应该添加-ErrorAction stop到您的Get-PSSnapin进入Catch Block.
Function Add-PowerShellSnapIn($SnapInName){
Try{
if ((Get-PSSnapin -Name $SnapInName -ErrorAction Stop) -eq $null){
Write-Warning "SnapIn Is Not Already Loaded"
}
}Catch [System.Exception]{
Write-Warning "Error Caught"
}
}
Add-PowerShellSnapIn -SnapInName "Microsoft.Exchange.Management.PowerShell.Admin"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
565 次 |
| 最近记录: |