olSync服务器上的PowerShell tr​​y / catch语句

时间:2013-06-19 18:10:36

标签: powershell try-catch powershell-v2.0 powershell-remoting

我在连接到live @ edu的olSync服务器上使用PowerShell 2.0。我正在尝试使用try / catch语句。

为了在live @ edu服务器上运行,我们必须运行一个使用Import-PSSession命令的脚本。

我遇到的问题是try / catch语句在连接到其他会话之前工作正常但在连接之后错误没有被捕获并且显示为正常情况。

(我的意思是完美的工作是他们没有出现,我的用户更友好的回应显示)

我错过了什么?我根本不理解PSSession命令吗?

连接代码(出于显而易见的原因,我没有提供凭据)

$Session = New-PSSession -ConfigurationName Microsoft.Exchange 
           -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred 
          -Authentication Basic -AllowRedirection  

Import-PSSession $Session

我正在测试的示例代码

$count = 0  
$name = "quit"  
$x  

do  
{   
try    
{  
    $name = Read-Host 'What is the username?'  
    $x = get-mailbox $name  
    write-host $x  
}  
catch  
{  
       Write-Host "Oh No!`n $error[0].exception"  
       $count++  
}  
}  
while ($name -ne "quit")  

write-host "$count errors happened"  

连接时输出

What is the username?: test  
test, test  

What is the username?: test2  
The operation couldn't be performed because object 'test2' couldn't be found on ...  

What is the username?: quit  
The operation couldn't be performed because object 'quit' couldn't be found on ...  

0 errors happened  
test  


未连接时输出

  

用户名是什么?:test
  哦不!   术语“获取邮箱”不被识别为cmdlet,函数,脚本文件的名称,>或可操作的程序。检查名称的拼写,或者如果包含路径,请验证
  路径是正确的,然后再试一次。术语“获取邮箱”
  不被识别为cmdlet,函数,脚本文件或可操作程序的名称   检查名称的拼写,或者如果包含路径,请验证
  路径是正确的,然后再试一次。[0] .exception

1 个答案:

答案 0 :(得分:3)

您获得的错误可能是非终止错误,try..catch只捕获终止错误。解决方案是在终止错误时解决所有错误。这可以通过使用ErrorAction参数或通过$ErrorActionPreference = 'Stop'

为脚本设置它来完成
$x = get-mailbox $name -ErrorAction Stop

请参阅herehere以及here