Powershell - Zugriffsberechtigungen von Ordnern übertragen
Hallo,
ich möchte gerne die ACL's von einem Ordner mit dem Namen "Personaldaten" auf ca. 100 anderen Ordner übertragen.
Meine Ordnerstruktur:
Mitarbeiterpapiere
Mitarbeitername
Personaldaten
Zertifikate
Mit
habe ich erfolgreich von einem Ordner auf einen anderen die ACL's übertrage können. Allerdings hätte ich das jetzt gerne automatisiert für alle Personaldaten-Order in den Mitarbeiterordnern.
Versucht habe ich
was leider nicht funktioniert hat.
Im Grunde muss ich nur jeden Personaldaten-Ordner Pfad herausfinden und die ACL's dann dorthin kopieren, nur wie?!
Ich muss dazu sagen, dass meine Powershellkentnisse gegen Null tendieren. Ich hoffe einer von euch hat einen gescheiten Tipp für mich?!
MfG
ich möchte gerne die ACL's von einem Ordner mit dem Namen "Personaldaten" auf ca. 100 anderen Ordner übertragen.
Meine Ordnerstruktur:
Mitarbeiterpapiere
Mitarbeitername
Personaldaten
Zertifikate
Mit
$DirectoryPath_org="D:\Mitarbeiterpapiere\__Name_Vorname\Personaldaten"
$DirectoryPath_dest="D:\Mitarbeiterpapiere\__Name_Vorname1\Personaldaten"
$ACL=Get-Acl $DirectoryPath_org
Set-Acl -path $DirectoryPath_dest -AclObject $ACL
habe ich erfolgreich von einem Ordner auf einen anderen die ACL's übertrage können. Allerdings hätte ich das jetzt gerne automatisiert für alle Personaldaten-Order in den Mitarbeiterordnern.
Versucht habe ich
$suchordner="D:\Mitarbeiterpapiere"
$gefunden = Get-ChildItem $suchordner -recursiv | where {$_.psIsConatainer -eq $true -and $_.Name -like 'Personaldaten'}
$DirectoryPath_org="D:\Mitarbeiterpapiere\__Name_Vorname\Personaldaten"
$ACL=Get-Acl $DirectoryPath_org
Set-Acl -path $gefunden -AclObject $ACL
was leider nicht funktioniert hat.
Im Grunde muss ich nur jeden Personaldaten-Ordner Pfad herausfinden und die ACL's dann dorthin kopieren, nur wie?!
Ich muss dazu sagen, dass meine Powershellkentnisse gegen Null tendieren. Ich hoffe einer von euch hat einen gescheiten Tipp für mich?!
MfG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 217373
Url: https://administrator.de/contentid/217373
Ausgedruckt am: 19.12.2024 um 08:12 Uhr
5 Kommentare
Neuester Kommentar
Hallo koehne,
kein Problem:
Grüße Uwe
kein Problem:
$pathOriginal = "D:\Mitarbeiterpapiere\__Name_Vorname\Personaldaten"
$destRoot = "D:\Mitarbeiterpapiere"
$aclOriginal = Get-Acl $pathOriginal
Get-ChildItem $destRoot -Recurse | ?{$_.PSIsContainer -eq $true -And $_.Name -like "Personaldaten"} | %{set-acl -Path $_.FullName -AclObject $aclOriginal}
Zitat von @koehne:
GENIAL! Danke schön! Funktioniert einwandfrei.
Kannste mir evtl. noch kurz erklären für was | und ? und % steht!?
GENIAL! Danke schön! Funktioniert einwandfrei.
Kannste mir evtl. noch kurz erklären für was | und ? und % steht!?
|
ist eine Pipe damit werden die Objekte an den nachfolgenden Befehl übergeben?{
} ist ein Alias für das CMDLet where-object
%{
} ist ein Alias für das CMDLet foreach-object
Grüße Uwe
Get-ChildItem $destRoot | ?{$_.PSIsContainer -eq $true} | %{set-acl -Path $_.FullName -AclObject $aclOriginal}
das hast du genau richtig erfasst, wenn nur die Namen der Mitarbeiter alle auf der ersten Ebene im Ordner "D:\Mitarbeiterpapiere" liegen ist das die richtige Vorgehensweise.
Wenn es das dann war noch ein gelöst dran.
Grüße Uwe