windows - Powershell Prøv/catch - get-user

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg lærer posh. Og jeg forsøger at forstå, hvorfor dette script ikke fanger advarslen.


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


Her er fejlen:


get-user : The operation couldn't be performed because object 'aaaa' couldn't be found on
'iDC01.contoso.com'. At C:UsersGra***Desktop	est.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


Jeg har tryied -WarningActions Stop og -ErrorAction Stop men ingen resultater.


Generelt har jeg forstået det grundlæggende i try/catch og følgende script virker ok.


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


Jeg bruger powershell\_ise 5.1. Ved du, hvad der er galt med get-user?
Jeg kan heller ikke bruge Get-ADuser.

Bedste reference


Der er to ting, der kan fanges, når du ringer til en funktion, Fejl eller Advarsel. Du kan indstille disse med $WarningPreference eller $ErrorActionPreference globalt i scriptet, eller individuelt ved hjælp af -ea eller -wa argumenterne. I dit eksempel bruger jeg følgende for at være sikker:


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


about\_Preference\_Variables [14]