2

J'apprends posh. Et j'essaie de comprendre pourquoi ce script n'attrape pas l'avertissement.Powershell Essayer/attraper - get-user

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

Voici l'erreur:

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 

J'ai tryied -WarningActions Stop et -ErrorAction Stop mais aucun résultat.

En général, j'ai compris les bases de try/catch et le script suivant fonctionne bien. Je utilise powershell_ise 5.1. Savez-vous quel est le problème avec le get-user? En outre, je ne peux pas utiliser Get-ADuser.

+0

'get-user' n'est pas une commande PowerShell native. À quoi ressemble le code de cette fonction? – gms0ulman

+0

'Get-User' est documenté comme étant une cmdlet Exchange et ne renvoie que des objets d'Exchange. –

+0

Vous avez défini WarningAction, mais pas ErrorAction. Votre ErrorActionPreference était probablement Continuer quand vous avez couru ceci? –

Répondre

1

Deux éléments peuvent être interceptés lors de l'appel d'une fonction, Erreur ou Avertissement. Vous pouvez les définir avec le $WarningPreference ou $ErrorActionPreference globalement dans le script, ou individuellement en utilisant les arguments -ea ou -wa. Dans votre exemple, j'utiliser ce qui suit pour être sûr:

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

about_Preference_Variables

+0

Merci @ TheIncorrigible1 et Paal Braathen. Mais j'ai essayé -ErrorAction Stop et ça n'a pas aidé. Et j'ai découvert que cela arrive parce que j'utilise Remote-powershell via New-PSSession. Cela fonctionne bien sur le serveur. – apatic