Jump to content

Powershell - try Catch funktioniert nicht


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben (bearbeitet)

Hallo,

 

ich habe ein Poweshell scrip mit dem ich user in einer SharePoint Seite berechtigen möchte.

 

hier der teil um den es geht.

Try
{
   Set-SPUser -Identity $ArrayUser[$i] -Web https://team.xyz.com -Group $temp 
}
catch
{
   "new User wird verwendet"
  new-SPUser -UserAlias $ArrayUser[$i] -Web https://team.xyz.com -Group $temp
}

 

der Set Befehl bricht wenn der user noch nie verwendet wurde mit dieser Fehler meldung ab.

Set-SPUser : You must specify a valid user object or user identity.
At D:\scripte\set_Index_ACLs.ps1:62 char:17
+          Set-SPUser <<<<  -Identity $ArrayUser[$i] -Web https://team.xyz.com -Group $temp
    + CategoryInfo          : InvalidArgument: (:) [Set-SPUser], PSArgumentException
    + FullyQualifiedErrorId : Microsoft.SharePoint.PowerShell.SPCmdletSetUser

 

der Catch wird aber nicht "angesprochen" hat jemend eine idee warum nicht?

 

Gruß

 

hawk0815

bearbeitet von hawk0815
Geschrieben (bearbeitet)

Hallo,

 

ich habe ein Poweshell scrip mit dem ich user in einer SharePoint Seite berechtigen möchte.

 

hier der teil um den es geht.

Try
{
   Set-SPUser -Identity $ArrayUser[$i] -Web https://team.xyz.com -Group $temp 
}
catch
{
   "new User wird verwendet"
  new-SPUser -UserAlias $ArrayUser[$i] -Web https://team.xyz.com -Group $temp
}

 

der Set Befehl bricht wenn der user noch nie verwendet wurde mit dieser Fehler meldung ab.

Set-SPUser : You must specify a valid user object or user identity.
At D:\scripte\set_Index_ACLs.ps1:62 char:17
+          Set-SPUser <<<<  -Identity $ArrayUser[$i] -Web https://team.xyz.com -Group $temp
    + CategoryInfo          : InvalidArgument: (:) [Set-SPUser], PSArgumentException
    + FullyQualifiedErrorId : Microsoft.SharePoint.PowerShell.SPCmdletSetUser

 

der Catch wird aber nicht "angesprochen" hat jemend eine idee warum nicht?

 

Gruß

 

hawk0815

 

Mit Standard Commandlets funktioniert try catch nicht soweit mir bekannt, Du kannst das nur benutzen wenn du .NET Klassen ansprichst, zum Beispiel [system.Net.WebRequest], vielleicht irre ich mich aber auch!

 

Viele Grüße!

bearbeitet von Timsk
Geschrieben

Es gibt bei Powershell zwei Arten von Errors. Die Terminating errors und non-terminating errors.

Terminating errors werden mit try + catch aufgefangen. Non-terminating errors leider nicht.

Du kannst, wie Cybquest schon richtig erwähnt hat, mit -ErrorAction "Stop" arbeiten

try 
{ 
    $ErrorActionPreference = "Stop"
    Set-SPUser .......
} 
catch {
    write-host $error[0].exception.Message
}
finally {
    $ErrorActionPreference = "Continue"
}
 

oder mit der Variable $?

Set-SPUser ......
if ($?) {
    write-host "Alles toll :)"
} else {
    write-host $error[0].exception.Message
}
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...