Autorizzazioni Directory script Powershell


1

Esiste un modo per clonare le autorizzazioni di una directory su un file e quindi eseguire quel file su un altro server per ricreare tali autorizzazioni sulla struttura ricreata.

Ho uno script per creare le directory:

New-Item -Path D:\superuser-data -ItemType directory
Net-Item -Path D:\superuser-data\documents -ItemType directory
Net-Item -Path D:\superuser-data\scripts -ItemType directory

Eseguo quello script quindi configuro le autorizzazioni nel modo desiderato con gli account AD sul server A.

Quindi voglio la possibilità di rieseguire quello script sul Server B e quindi eseguire un altro script sul Server B che imposta le autorizzazioni in modo che corrispondano a quello che ho fatto sul Server A.


Consiglio vivamente questo modulo per comodità: gallery.technet.microsoft.com/scriptcenter/… utilizzando solo get-acle set-aclpuò essere molto dolorante
SimonS

Risposte:


1

Da qui: https://seankilleen.com/2015/01/how-to-copy-ACL-Permissions-To-Folders-With-Powershell/

Powershell contiene i comandi get-acle set-acl, e puoi collegarli insieme:

Get-Acl -Path C:\Folder1 | Set-Acl -Path C:\Folder2

Tali percorsi possono essere UNC o altri metodi di percorso appropriati, quindi dovrebbero essere in grado di funzionare attraverso le reti.

Aggiornare:

I descrittori di sicurezza POSSONO essere copiati e archiviati. Quello che segue non è il processo più efficiente, è la prima volta che provo a farlo, ma è funzionale.

Alcune ricerche di Google perfezionate in modo iterativo mi hanno portato qui: http://community.idera.com/powershell/powertips/b/tips/posts/replacing-ntfs-permissions-with-sddl-information

Ed ecco il processo.

  1. Cattura l'ACL dal computer di origine:
    $SDout = get-acl -path (source folder)
  2. Conservare SDDL negli Appunti:
    $SDout.GetSecurityDescriptorSddlForm('All') | clip.exe
  3. Incolla nel Blocco note e passa al computer di destinazione.
  4. Copia SOLO la SDDL a riga singola negli Appunti.
  5. Memorizza l'SDDL di origine in un parametro:
    $SDsource = '(paste the source SDDL here)'
  6. Cattura l'oggetto ACL di destinazione in un parametro:
    $SDtarget = get-acl -path (target folder)
  7. Sovrascrivi SDDL del target con SDDL del sorgente:
    $SDtarget.SetSecurityDescriptorSddlForm($SDsource)
  8. Scrivi l'ACL modificato nella cartella di destinazione:
    set-acl -Path (target folder) -ACLObject $SDtarget

Controllando le proprietà ora dovresti vedere che la cartella di destinazione ha le stesse autorizzazioni della cartella di origine.


Posso archiviare i risultati di Get-Acl in un file che set-acl può leggere? "` Get-Acl D: \ superuser-data \ | Out-File superuser-data.txt cat superuser-data.txt | Set- Acl -Path D: \ superuser2-data`
Nick,

La pipe utilizza il sistema di oggetti PS. L'invio dell'output di get-acl a un file perde la natura dell'oggetto delle informazioni, quindi dovrai massaggiare i dati durante l'esportazione o l'importazione o nel mezzo. Ho provato semplicemente a archiviare l'output in un file ( out-file) e quindi importarlo in una nuova variante (get-content) e la sintassi non è stata compresa da set-acl.
music2myear,

1
Ok, penso di aver capito qualcosa. Dammi qualche minuto per testare.
music2myear,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.