2017-10-25 16 views
1

Ich versuche, meine eigenen Fehlermeldungen unter Verwendung throw zu drucken. Betrachten Sie folgendes Beispiel:Nachricht wird nicht angezeigt

$computerName = $env:COMPUTERNAME 
$adsi = [adsi]("WinNT://$computerName") 

if (!($adsi.Children.Find($userGroup, 'group'))) 
{ 
    throw "User group not found." 
} 

Wenn die Benutzergruppe nicht korrekt ist, wird diese Fehlermeldung angezeigt:

Exception calling "Find" with "2" argument(s): The group name could not be found.

Gibt es eine Möglichkeit, meine throw Nachricht zu zeigen, anstatt die allgemeine Ausnahme?

Antwort

2

versuchen Sie dies:

$computerName = $env:COMPUTERNAME 
$adsi = [adsi]("WinNT://$computerName") 
try { 
    $adsi.Children.Find($userGroup, 'group') 
} 
catch{ 
    throw "User group not found." 
} 
2

[adsi] eine Gewohnheit des Werfens Abschlussfehler hat. Dies geschieht auch mit Get-ADUser. Aus diesem Grund ist es notwendig, den Fehler in einem try/catch (wie in whatever's answer) zu erfassen.

Als Alternative können Sie prüfen, ob die Gruppe existiert, indem Sie zuerst alle lokalen Gruppen abfragen und sehen, ob Ihre existiert.

$computerName = $env:COMPUTERNAME 
$adsi = [adsi]("WinNT://$computerName") 
$localGroups = $adsi.children | Where-Object{$_.SchemaClassName -eq "Group"} 
If($userGroup -notin $localGroups.Name){ 
    throw "Your group is in another castle." 
} 

oder eine Variante

if(-not ($adsi.children | Where-Object{$_.SchemaClassName -eq "Group" -and $_.Name -eq $userGroup})){ 
    throw "Your group is in another castle." 
} 

Je nachdem, wo Sie mit diesem Code werden fortgesetzt, es könnte diese Informationen zu speichern, wenn von Vorteil sein.

Verwandte Themen