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

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
Link zu diesem Kommentar

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
Link zu diesem Kommentar

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
}
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...