Powershell CSV Werte verarbeiten bzw verändern
Hallo zusammen,
ich habe eine CSV Datei mit folgendem Inhalt:
Dort sind also verschiedene Pfade aufgelistet und wer alles darauf welche Rechte hat.
Jetzt möchte ich gerne, dass mir Powershell durchgeht und im im 2. Array die Gruppe nimmt und mit Get-AdGroupmember $_.CSV[$Account] prüfen, ob es sich um eine Gruppe handelt und falls ja, soll er die Mitglieder an diese Stelle setzen.
Und das halt für die komplette CSV durchlaufen mit einer Schleife.
Im Ergebnis sollen dann in der CSV die Enduser samt Berechtigungen stehen.
Soviel zur Theorie und wie funktioniert jetzt die Praxis? :D
Hoffe ihr könnt mir ein paar Tipps dazu geben.
Vielen Dank
ich habe eine CSV Datei mit folgendem Inhalt:
"Folder";"Account";"Rights";"AccessControlType";"InheritanceFlags"
"D:\Ordner1\Ordner2\Ordner3";"BUILTIN\Administrators";"FullControl";"Allow";"ContainerInherit, ObjectInherit"
"D:\Ordner 1\Ordner2\Ordner3";"Domain\Access FuH";"Modify, Synchronize";"Allow";"ContainerInherit, ObjectInherit"
"D:\Ordner1\Ordmer2\Ordner3\Order4";"Domain\Access Produktion";"Modify, Synchronize";"Allow";"ContainerInherit, ObjectInherit"
"D:\Ordner1\Ordner4\Ordner5";"Domain\Buha";"Modify, Synchronize";"Allow";"ContainerInherit, ObjectInherit"
$CSV = Import-csv -Path .\Rechte.csv -Delimiter ;
Und das halt für die komplette CSV durchlaufen mit einer Schleife.
$length = ($CSV.Folder).Count - 1
while ( $i<$length; $i++)
Im Ergebnis sollen dann in der CSV die Enduser samt Berechtigungen stehen.
Soviel zur Theorie und wie funktioniert jetzt die Praxis? :D
Hoffe ihr könnt mir ein paar Tipps dazu geben.
Vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 619769
Url: https://administrator.de/contentid/619769
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
5 Kommentare
Neuester Kommentar
Moin.
Gruß w.
Schönen 🐟 Tag
$csv = Import-CSV .\rechte.csv -Delimiter ";"
$csv | %{
$grp = $null
try{
$grp = Get-ADObject -LdapFilter "(&(objectSID=$(([System.Security.Principal.NTAccount]$_.Account).Translate([System.Security.Principal.SecurityIdentifier]).Value))(objectClass=Group))"
}catch{}
if ($grp){
$_.Account =( Get-ADGroupMember $grp.DistinguishedName -Recursive | select -Expand Name) -join ','
}
}
$csv | export-csv .\rechte.csv -delimiter ";" -Notype -Encoding UTF8
Schönen 🐟 Tag
War noch ein kleiner Fehler drin... ist oben behoben. Funktioniert hier, getestet.
Zitat von @HAinsane:
Funktioniert tatsächlich. Kannst du vielleicht ein zwei Worte dazu sagen, wie es funktioniert, vielleicht macht es dann bei mir klick!
Ganz einfach, es wird mit Get-ADObject eine LDAP-Abfrage gemacht mit der SID und dem Attribut objectClass was dem Wert "Gruppe" entsprechen muss, liefert diese Abfrage ein Ergebnis wurde eine Gruppe mit dieser SID gefunden und damit dann per Get-ADGroupMember deren Mitglieder abgefragt und diese per join mit einem Komma in die Spalte Account eingefügt. Hth.Funktioniert tatsächlich. Kannst du vielleicht ein zwei Worte dazu sagen, wie es funktioniert, vielleicht macht es dann bei mir klick!
Ich habe festgestellt, dass zwischendrin noch Einzeluser Berechtigungen haben.
Das macht dem Code nichts aus, diese werden ignoriert weil sie ja keine Gruppe sind Kann ich in dem Catchteil dann einfach eine Abfrage nach AD-Usern machen? Um die Namen dort auch vollständig aufzulösen?
Nicht nötig. Ist ja keine Gruppe