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
Please also mark the comments that contributed to the solution of the article
Content-Key: 7591743799
Url: https://administrator.de/contentid/7591743799
Printed on: July 27, 2024 at 12:07 o'clock
4 Comments
Latest comment
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