Powershell尝试/赶上 – 得到用户

我在学习posh 。 而且我正试图理解为什么这个脚本没有收到警告。

 try{ get-user aaaa -WarningAction Stop } catch { Write-Host "hi" } 

这是错误:

 get-user : The operation couldn't be performed because object 'aaaa' couldn't be found on 'iDC01.contoso.com'. At C:\Users\Gra***\Desktop\test.ps1:2 char:5 + get-user aaaa -WarningAction Stop + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Get-User], ManagementObjectNotFoundException + FullyQualifiedErrorId : [Server=ME1,RequestId=ebcde0d2-9222-443b-b25a-ef7279fd168e, TimeStamp=20.06.2017 13:51:35] [FailureCategory=Cmdlet-ManagementObjectNotFoundException] FE0D594D,Microsoft.Exchange.Management.RecipientTasks.GetUser 

我尝试了-WarningActions -WarningActions Stop-ErrorAction Stop但没有结果。

一般来说,我已经了解了try/catch的基础知识,下面的脚本工作正常。

 try{ Get-Process -name xyz -ErrorAction Stop } catch{ Write-Host "oops" } 

我正在使用powershell_ise 5.1 。 你知道get-user什么问题吗? 另外,我不能使用Get-ADuser

调用函数Error或Warning时可以捕获两件事情。 您可以在脚本中全局设置$WarningPreference$ErrorActionPreference ,也可以分别使用-ea或-wa参数进行设置。 在你的例子中,我会使用以下来确定:

 Try { Get-User aaaa -wa Stop -ea Stop } Catch { Write-Output "hi" Write "[$($_.Exception.GetType().FullName)] - $($_.Exception.Message)" } 

参阅about_Preference_Variables