Dieser stempelt mich. Ich versuche, dies mit PowerShell zu tun, aber es muss nicht sein ...Re-acl von der Textdatei
Grundsätzlich habe ich eine Textdatei mit ACLs Informationen für eine große Verzeichnisstruktur, die migriert wurde (ich weiß, es gibt viel zu sein gewünscht aus dem Inhalt, aber wir können nicht mehr auf das ursprüngliche Dateisystem zugreifen, also müssen wir damit arbeiten).
Ich muss eine Batch-Datei generieren, um das neue (kopierte) Dateisystem zu reaklieren.
Also kurz gesagt, ich brauche Text so zu konvertieren (sorry für die Schriftrolle, aber ich versuche, den Zeilenabstand zu erhalten):
Path: \\Share.Domain.com\Directory01$\Subdirectory01
AccessToString : DOMAIN\Group01-Knuckleheads Allow ReadAndExecute, Synchronize
BUILTIN\Administrators
Path: \\Share.Domain.com\Directory02$\Subdirectory01
AccessToString : DOMAIN\Different-Group02 Allow FullControl
BUILTIN\Administrators Allow FullControl
In neuen Dateien (oder die gleichen Dateien, doesn ‚t Angelegenheit wirklich) mit dem Inhalt wie folgt aus:
ICacls "\\Share.Domain.com\Directory01$\Subdirectory01" /Grant "DOMAIN\Group01-Knuckleheads":(OI)(CI)R,X,S /t /c /l /q /inheritance:r
ICacls "\\Share.Domain.com\Directory01$\Subdirectory01" /Grant "BUILTIN\Administrators":(OI)(CI)F /t /c /l /q /inheritance:r
ICacls "\\Share.Domain.com\Directory02$\Subdirectory01" /Grant "DOMAIN\Different-Group02":(OI)(CI)F /c /l /q /inheritance:r
ICacls "\\Share.Domain.com\Directory02$\Subdirectory01" /Grant "BUILTIN\Administrators":(OI)(CI)F /c /l /q /inheritance:r
Mein halb pathetischen Versuch, diese zu erarbeiten voran noch, aber ich merke, dass dieser Feind ist größer als mein mojo:
#$ACLs = Get-Content C:\Scripts\Test\AndTest.txt
#ForEach-Object ($ACL in $ACLs)
#{
#Figure out how to break strings into variables....
#}
#Declare Var - Need to populate from the imported text file
$FilePath = "\\Share.Domain.com\Directory01$\Subdirectory01"
$GroupName = "DOMAIN\Domain Admins"
$TestPerm = "ReadAndExecute"
If ($TestPerm = "FullControl"){$Perms = "F"}
Elseif ($TestPerm = "ReadAndExecute"){$Perms = "RX"}
Elseif ($TestPerm = "Modify"){$Perms = "M"}
Elseif ($TestPerm = "Deny"){$Perms = "D"}
Elseif ($TestPerm = "Read"){$Perms = "R"}
Elseif ($TestPerm = "Write"){$Perms = "W"}
cls
#Build icacls string -Test Output
Write-Host "ICacls ""$FilePath"" /Grant ""$GroupName"":(OI)(CI)$Perms /t /c /l /q /inheritance:r"
#Write icacls batch file
#Out-File "C:\Scripts\Test\re-acl.cmd" "ICacls ""$FilePath"" /Grant ""$GroupName"":(OI)(CI)$Perms /t /c /l /q /inheritance:r"
Ich merke, dass es hier eine Menge Arbeit gibt & Ich fange gerade an, das herauszufinden. Zum Beispiel denke ich, ich muss die Berechtigungen in einem Array auflisten und die Zeichenfolge als solche erstellen. Es gibt auch spezielle Berechtigungen etc ...
Aber jetzt versuche ich herauszufinden, wie Sie die Textdatei importieren und dann in Variablen zerlegen ... Wie gesagt, ich arbeite in Powershell, aber es kann wirklich alles sein ... VB oder Python vielleicht?
Vielen Dank im Voraus!
Ich denke, es könnte einen einfacheren Weg geben, dies zu tun. Sie können die Zugriffsrechte für eine Datei mit den GetAccessControls() -Methoden lesen. Probieren Sie es aus: '(ls foo.txt) .GetAccessControl()'. Wenn Sie gleichzeitig Zugriff auf beide Ordner haben, können Sie die Übertragung möglicherweise einfacher vornehmen. Es gibt auch eine 'SetAccessControl()' Methode, um sie zu setzen, dachte ich habe sie nie selbst benutzt. – n3wjack
@ n3wjack _aber wir können nicht mehr auf das ursprüngliche Dateisystem zugreifen, _ – Matt
Genau ...Was passierte, war, dass wir einige Skripte hatten, die das richtig machten, und ich schrieb dieses kleine Skript, um die AIs in einer für Menschen lesbaren Form auszugeben ... Einer meiner Mitarbeiter bat darum, es zu benutzen und ich wusste nicht, dass sie nicht die Original ... Ich habe es erst nach dem Cutover herausgefunden ... –