Powershell User zur Admingruppe hinzufügen mag nicht beim 2ten Scriptlauf
Aloa in die Runde,
ich versuche gerade einige Nutzer in die lokale Administrator Gruppe einzufügen.
Das cmdlet add-localgroupmember ist leider nicht nutzbar.
Daher versuch ich den Weg über ADSI.
Wenn ich nun meinen mein Script ausführe macht er das auch ohne murren und fügt die fehlenden Nutzer in die lokale Administrator Gruppe ein.
Führe ich das Script allerdings ein 2tes mal aus, geht er allerdings trotzdem in den unten stehenden IF Teil.
Das wirft dann einen Fehler weil der Nutzer ja bereits in der Gruppe enthalten ist.
Warum geht er in den IF Zweig die Bedingung ist doch nicht erfüllt?
Mit "notcontains" läufts auch nicht.
Wenn einer einen anderen Weg hat wie ich die User reinbekomme in die Gruppe, bin ich immer offen für Verbesserung.
VG
ich versuche gerade einige Nutzer in die lokale Administrator Gruppe einzufügen.
Das cmdlet add-localgroupmember ist leider nicht nutzbar.
Daher versuch ich den Weg über ADSI.
$server = $env:COMPUTERNAME
$localgroup = "Administrators"
$group = [ADSI]"WinNT://$Server/$localgroup,group"
$members = $group.psbase.Invoke("Members")
$membersList = @()
$checknewUsers = @('name1','name2')
$members | ForEach-Object {
$membersList += "$($_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null))"
}
#$membersList
foreach($user in $checknewUsers){
if(($user -notmatch $membersList)){
write-host "$user : Name nicht in memberlist"
$group.add("WinNT://<domain>/$user,user")
}
}
$members = $group.psbase.Invoke("Members")
$members | ForEach-Object {
$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)
}
Wenn ich nun meinen mein Script ausführe macht er das auch ohne murren und fügt die fehlenden Nutzer in die lokale Administrator Gruppe ein.
Führe ich das Script allerdings ein 2tes mal aus, geht er allerdings trotzdem in den unten stehenden IF Teil.
if(($user -notmatch $membersList)){
write-host "$user : Name nicht in memberlist"
$group.add("WinNT://<domain>/$user,user")
}
Das wirft dann einen Fehler weil der Nutzer ja bereits in der Gruppe enthalten ist.
Warum geht er in den IF Zweig die Bedingung ist doch nicht erfüllt?
Mit "notcontains" läufts auch nicht.
Wenn einer einen anderen Weg hat wie ich die User reinbekomme in die Gruppe, bin ich immer offen für Verbesserung.
VG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 508311
Url: https://administrator.de/contentid/508311
Ausgedruckt am: 24.11.2024 um 18:11 Uhr
3 Kommentare
Neuester Kommentar
Hi,
Sicher? Hast Du Dir den Inhalt von $membersList im 2. Lauf mal anzeigen lassen?
E.
Sicher? Hast Du Dir den Inhalt von $membersList im 2. Lauf mal anzeigen lassen?
E.
Das kann so auch nicht funktionieren.
-notmatch ist ein Vergleich mit Regular Expressions, ich sehe hier keine RegEx.
-notcontains ist das richtige:
Der Array, der durchsucht werden soll, ob er das Element enthält kommt VORNE hin.
Kann man sich sprachlich ganz einfach merken:
Array enthält nicht Element.
-notmatch ist ein Vergleich mit Regular Expressions, ich sehe hier keine RegEx.
-notcontains ist das richtige:
$membersList -notcontains $user
Kann man sich sprachlich ganz einfach merken:
Array enthält nicht Element.
Oder man nimmt -notin dann kann die Reihenfolge so wie sie jetzt ist bestehen bleiben.
$user -notin $membersList