ACL kopierter Verzeichnisse vergleichen
Hallo,
ich muss gerade ganze Verzeichnisse von einem Laufwerk zum anderen kopieren und dabei alle Berechtigungen beibehalten.
Ich habe die Kopie per robocopy gemacht
set day=%date:~0,2%
robocopy e:\ f:\ *.* /MIR /COPY:datso /Z /mt:4 /r:0 /w:0 /NP /log:mv%day%.log /lev:1 /XD "E:\DWDocuments-old"
wollte aber nun sicherheitshalber kontrollieren.
Ich habe mir daher folgenden Skript erstellt
$acl_e=""
$acl_f=""
Get-ChildItem –Path "E:\dwfolders\" –Recurse |
Foreach-Object {
$pfad=$_.fullname
$acl_e=get-acl $pfad | select Owner,group, access, Audit, Sddl
$pfad ='F'+ $pfad.substring(1,$pfad.length-1)
$acl_f=get-acl $pfad | select Owner,group, access, Audit, Sddl
if (($acl_e -ne $acl_f) )
{
write-host $pfad
write-host $acl_e
write-host $acl_f
break
}
}
$acl_e scheint aber immer ungleich $acl_f zu sein, obwohl die ausgegebenen Strings identisch aussehen
@{Owner=VORDEFINIERT\Administratoren; Group=WOBI\Domänen-Benutzer; Access=System.Security.AccessControl.AuthorizationRuleCollection; Audit=; Sddl=O:BAG:DUD:AI(A;;FA
;;;BA)(A;ID;FA;;;BA)(A;OICIIOID;GA;;;BA)(A;ID;FA;;;SY)(A;OICIIOID;GA;;;SY)(A;ID;0x1301bf;;;AU)(A;OICIIOID;SDGXGWGR;;;AU)(A;ID;0x1200a9;;;BU)(A;OICIIOID;GXGR;;;BU)}
@{Owner=VORDEFINIERT\Administratoren; Group=WOBI\Domänen-Benutzer; Access=System.Security.AccessControl.AuthorizationRuleCollection; Audit=; Sddl=O:BAG:DUD:AI(A;;FA
;;;BA)(A;ID;FA;;;BA)(A;OICIIOID;GA;;;BA)(A;ID;FA;;;SY)(A;OICIIOID;GA;;;SY)(A;ID;0x1301bf;;;AU)(A;OICIIOID;SDGXGWGR;;;AU)(A;ID;0x1200a9;;;BU)(A;OICIIOID;GXGR;;;BU)}
Ich habe die zwei Zeilen auch online verglichen, finde aber keinen Unterschied.
Kann mir bitte jemand sagen, was ich hier falsch mache?
Danke
Andeas
ich muss gerade ganze Verzeichnisse von einem Laufwerk zum anderen kopieren und dabei alle Berechtigungen beibehalten.
Ich habe die Kopie per robocopy gemacht
set day=%date:~0,2%
robocopy e:\ f:\ *.* /MIR /COPY:datso /Z /mt:4 /r:0 /w:0 /NP /log:mv%day%.log /lev:1 /XD "E:\DWDocuments-old"
wollte aber nun sicherheitshalber kontrollieren.
Ich habe mir daher folgenden Skript erstellt
$acl_e=""
$acl_f=""
Get-ChildItem –Path "E:\dwfolders\" –Recurse |
Foreach-Object {
$pfad=$_.fullname
$acl_e=get-acl $pfad | select Owner,group, access, Audit, Sddl
$pfad ='F'+ $pfad.substring(1,$pfad.length-1)
$acl_f=get-acl $pfad | select Owner,group, access, Audit, Sddl
if (($acl_e -ne $acl_f) )
{
write-host $pfad
write-host $acl_e
write-host $acl_f
break
}
}
$acl_e scheint aber immer ungleich $acl_f zu sein, obwohl die ausgegebenen Strings identisch aussehen
@{Owner=VORDEFINIERT\Administratoren; Group=WOBI\Domänen-Benutzer; Access=System.Security.AccessControl.AuthorizationRuleCollection; Audit=; Sddl=O:BAG:DUD:AI(A;;FA
;;;BA)(A;ID;FA;;;BA)(A;OICIIOID;GA;;;BA)(A;ID;FA;;;SY)(A;OICIIOID;GA;;;SY)(A;ID;0x1301bf;;;AU)(A;OICIIOID;SDGXGWGR;;;AU)(A;ID;0x1200a9;;;BU)(A;OICIIOID;GXGR;;;BU)}
@{Owner=VORDEFINIERT\Administratoren; Group=WOBI\Domänen-Benutzer; Access=System.Security.AccessControl.AuthorizationRuleCollection; Audit=; Sddl=O:BAG:DUD:AI(A;;FA
;;;BA)(A;ID;FA;;;BA)(A;OICIIOID;GA;;;BA)(A;ID;FA;;;SY)(A;OICIIOID;GA;;;SY)(A;ID;0x1301bf;;;AU)(A;OICIIOID;SDGXGWGR;;;AU)(A;ID;0x1200a9;;;BU)(A;OICIIOID;GXGR;;;BU)}
Ich habe die zwei Zeilen auch online verglichen, finde aber keinen Unterschied.
Kann mir bitte jemand sagen, was ich hier falsch mache?
Danke
Andeas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7591743799
Url: https://administrator.de/contentid/7591743799
Ausgedruckt am: 17.11.2024 um 17:11 Uhr
4 Kommentare
Neuester Kommentar
Was kommt raus bei ... ?
Vielleicht kann man einfach diese vergleichen?
Edit:
Ich sehe gerade ...
Wenn Du SDDL dabei hast, dann reicht es doch, wenn Du dieses vergleichst?
$acl_e.ToString()
$acl_f.ToString()
Vielleicht kann man einfach diese vergleichen?
if ($acl_e.ToString() -ne $acl_f.ToString() ) {
...
}
Edit:
Ich sehe gerade ...
Wenn Du SDDL dabei hast, dann reicht es doch, wenn Du dieses vergleichst?
$Quelle = $_.fullname
$Ziel ='F'+ $Quelle.substring(1,$Quelle.length-1)
If( (get-acl $Quelle).SDDL -ne (get-acl $Ziel).SDDL) ) {
...
}
Moin,
Gruß,
Dani
ich muss gerade ganze Verzeichnisse von einem Laufwerk zum anderen kopieren und dabei alle Berechtigungen beibehalten.
Ist es ein und das selbe Laufwerk oder sind das zwei verschiedene Laufwerke? Weil ist es ein das selbe Laufwerk (z.B. D:\ ) so kann das Standardverhalten von Windows per Registry angepasst werden. Wenn es zwei verschiedene Laufwerke sind, sollte die ACL des Zielverzeichnisses übernommen werden.Gruß,
Dani