Csv-Datei pro Abteilung mit den Nutzer und deren Gruppen erstellen
Hallo,
ich habe bis jetzt ein Script, der in 1 csv-Datei alle Nutzer, die Gruppen und das Zugriffsrecht steht.
Es sieht so aus:
User1,"PersNr","Abt1_Ordner1","Ändern"
User1,"PersNr","Abt1_Ordner2","Lesen"
User2,"PersNr","Abt2_Ordner1","Ändern"
User2,"PersNr","Abt2_Ordner2","Ändern"
Der Code dazu:
Ich würde aber gerne pro OU (=1 Abteilung) eine csv-Datei erstellen lassen, damit das filtern nicht mehr solange dauert.
Dazu hat der Nutzer "colinardo" bereits folgendes Script erstellt:
Die Dateien werden auch pro OU erstellt, aber ich würde gerne die .csv-Datei so formatieren/aussehen lassen wie oben.
D.h., pro Zeile erscheint der Nutzer und eine Gruppe und dahinter das Recht "ändern" oder "lesen".
Es gibt quasi für jeden Abteilungsordner 2 Gruppen, als Bsp. 01_01_R_Ordner und 01_01_C_Ordner. R=Read, C=Change
Im Moment wird es so angezeigt, dass alle Gruppen in eine Zeile geschrieben werden, was ein bisschen unübersichtlich wird.
ich habe bis jetzt ein Script, der in 1 csv-Datei alle Nutzer, die Gruppen und das Zugriffsrecht steht.
Es sieht so aus:
User1,"PersNr","Abt1_Ordner1","Ändern"
User1,"PersNr","Abt1_Ordner2","Lesen"
User2,"PersNr","Abt2_Ordner1","Ändern"
User2,"PersNr","Abt2_Ordner2","Ändern"
Der Code dazu:
Import-Module ActiveDirectory
$path = "C:\temp\AnlageA\test.csv"
$alleGruppen = get-adgroup -filter * -SearchBase "OU=Neues_FS,OU=01_Benutzer_Gruppen,DC=bwkrhs,DC=kob,DC=zsanbw,DC=de"
foreach($Gruppe in $alleGruppen)
{
$Members = get-adgroupmember -identity $Gruppe|Select-Object Name,SamAccountName,GroupName|Foreach-Object {
$_.GroupName = $Gruppe
$_
}| Export-CSV $path -Append -NoTypeInformation -Encoding UTF8
}
(Get-Content $path) -replace "CN=","" | out-file $path
(Get-Content $path) -replace '(?s),OU=.+' | out-file $path
(Get-Content $path) | Foreach-Object { If ($_ -match "_C_") { $_ + "`",`"Ändern`""} else { $_ } }| Set-Content $path
(Get-Content $path) | Foreach-Object { If ($_ -match "_R_") { $_ + "`",`"Lesen`""} else { $_ } }| Set-Content $path
(Get-Content $path) -replace "_C_","_" | out-file $path
(Get-Content $path) -replace "_R_","_" | out-file $path
Ich würde aber gerne pro OU (=1 Abteilung) eine csv-Datei erstellen lassen, damit das filtern nicht mehr solange dauert.
Dazu hat der Nutzer "colinardo" bereits folgendes Script erstellt:
$exportpath = 'C:\temp'
$searchbase = "OU=Neues_FS,..."
Get-ADOrganizationalUnit -F * -Searchbase $searchbase -SearchScope Onelevel | %{ Get-ADuser -Filter * -SearchBase $_.DistinguishedName -SearchScope OneLevel | select SamAccountName, @{n='Groups';e={(Get-ADPrincipalGroupMembership $_.SamAccountName).Name -join ','}} | export-csv "$exportpath\$($_.Name).csv" -NoType -Delimiter ";" -Encoding UTF8
}
Die Dateien werden auch pro OU erstellt, aber ich würde gerne die .csv-Datei so formatieren/aussehen lassen wie oben.
D.h., pro Zeile erscheint der Nutzer und eine Gruppe und dahinter das Recht "ändern" oder "lesen".
Es gibt quasi für jeden Abteilungsordner 2 Gruppen, als Bsp. 01_01_R_Ordner und 01_01_C_Ordner. R=Read, C=Change
Im Moment wird es so angezeigt, dass alle Gruppen in eine Zeile geschrieben werden, was ein bisschen unübersichtlich wird.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 372418
Url: https://administrator.de/contentid/372418
Ausgedruckt am: 26.11.2024 um 01:11 Uhr