StefanWe 14 Geschrieben 18. Oktober 2022 Melden Teilen Geschrieben 18. Oktober 2022 Hallo, mir ist die Tage leider etwas blödes in meinem Script aufgefallen. Und zwar füge ich ein User Objekt in mehrere Gruppen hinzu. Das Hinzufügen habe ich in ein try catch gebaut. Leider war eine der Gruppen in der Mitte mittlerweile gelöscht. Das Script lief, hat den User in die ersten Gruppen aufgenommen, bei der 3. ist es dann in den Catch gesprungen und hat die restlichen Gruppen nicht verarbeitet. Jetzt meine Frage, wie würde man dies so optimieren, das das Script sauber läuft aber auch das Logging so ist, das man später genau sehen kann, was ist schief gelaufen? Aktuell try { Add-ADGroupMember -Identity "Group2" -Members $sAMAccountName Add-ADGroupMember -Identity "Group3" -Members $sAMAccountName Add-ADGroupMember -Identity "Group4" -Members $sAMAccountName Add-ADGroupMember -Identity "Group5" -Members $sAMAccountName Add-ADGroupMember -Identity "Group6" -Members $sAMAccountName } catch { Write-Host "$($_.Exception.Message)"} Für jedes cmdlet ein eigenes try Catch? Zitieren Link zu diesem Kommentar
cj_berlin 1.329 Geschrieben 18. Oktober 2022 Melden Teilen Geschrieben 18. Oktober 2022 Moin, entweder ein eigenes Try/Catch für jeden Aufruf (das würde man vermutlich ohnehin in einer Schleife machen, dann wäre es nur ein Try/Catch - in der Schleife halt), oder Add-ADPrincipalGroupMembership mit mehreren Gruppen verwenden, oder aber ein Trap - dann aber aufpassen, in welchem Scope die Aufrufe sind - Trap springt immer hinter das Ende des Script Blocks, in den der Fehler aufgetreten ist (hier wäre die Schleife evtl. ungünstig). Zitieren Link zu diesem Kommentar
StefanWe 14 Geschrieben 18. Oktober 2022 Autor Melden Teilen Geschrieben 18. Oktober 2022 vor 19 Minuten schrieb cj_berlin: Moin, entweder ein eigenes Try/Catch für jeden Aufruf (das würde man vermutlich ohnehin in einer Schleife machen, dann wäre es nur ein Try/Catch - in der Schleife halt), oder Add-ADPrincipalGroupMembership mit mehreren Gruppen verwenden, oder aber ein Trap - dann aber aufpassen, in welchem Scope die Aufrufe sind - Trap springt immer hinter das Ende des Script Blocks, in den der Fehler aufgetreten ist (hier wäre die Schleife evtl. ungünstig). Wie meinst du das mit einer Schleife? Zitieren Link zu diesem Kommentar
testperson 1.707 Geschrieben 18. Oktober 2022 Melden Teilen Geschrieben 18. Oktober 2022 Hi, ich würde ein Error Handling mittels Try / Catch tatsächlich nur für "wirklich" unvorhergesehenes verwenden und "die anderen" Fälle möglichst im Code abfangen. In deinem Fall wäre das bspw. die AD Group erst auslesen und dann mit dem entsprechenden Objekt weiterarbeiten, sofern es nicht leer ist. Evtl. wäre hier aber auch ein ganz anderer Ansatz denkbar, indem du dir verschiedene "Template User" erstellst und dort die Gruppenmitgliedschaften ausließt und weiterverarbeitest. In "grob" mit Schleife bzw. auch ohne Try / Catch: # Mit Schleife und Try / Catch $Groups = @("Group1", "Group2", "Group3", "Group4") foreach($g in $Groups){ try{ Add-ADGroupMember -Identity $g ` -Members $samAccountName } catch{ Write-Output "ALAAAARM: $g" } } # Alternative foreach($g in $Groups){ $objADGroup = Get-ADGroup -SearchBase "<OU mit den Gruppen>" ` -Filter "name -eq $g" if($null -ne $objADGroup){ Add-ADGroupMember -Identity $objADGroup ` -Members $samAccountName } } Gruß Jan 1 Zitieren Link zu diesem Kommentar
MurdocX 953 Geschrieben 23. Oktober 2022 Melden Teilen Geschrieben 23. Oktober 2022 Und schon vorwärts gekommen? Am Einfachsten ist es wie schon geschrieben über eine Schleife. @testperson Bei der Alternative gibts keinen Alarm? 1 Zitieren Link zu diesem Kommentar
StefanWe 14 Geschrieben 23. Oktober 2022 Autor Melden Teilen Geschrieben 23. Oktober 2022 vor einer Stunde schrieb MurdocX: Und schon vorwärts gekommen? Am Einfachsten ist es wie schon geschrieben über eine Schleife. @testperson Bei der Alternative gibts keinen Alarm? ja vielen Dank. Die Variante mit der Schleife ist super. Auf die Idee, die Gruppe zuvor in ein Array zu packen, bin ich echt nicht gekommen. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.