Set-Acl
Modifica il descrittore di sicurezza di un elemento specificato, ad esempio un file o una chiave del Registro di sistema.
Sintassi
Set-Acl
[-Path] <String[]>
[-AclObject] <Object>
[-ClearCentralAccessPolicy]
[-PassThru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-Acl
[-InputObject] <PSObject>
[-AclObject] <Object>
[-PassThru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-Acl
-LiteralPath <String[]>
[-AclObject] <Object>
[-ClearCentralAccessPolicy]
[-PassThru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Descrizione
Questo cmdlet è disponibile solo nella piattaforma Windows.
Il Set-Acl
cmdlet modifica il descrittore di sicurezza di un elemento specificato, ad esempio un file o una chiave del Registro di sistema, in modo che corrisponda ai valori in un descrittore di sicurezza fornito.
Per usare Set-Acl
, usare il parametro Path o InputObject per identificare l'elemento il cui descrittore di sicurezza si desidera modificare. Usare quindi i parametri AclObject o SecurityDescriptor per fornire un descrittore di sicurezza con i valori da applicare. Set-Acl
applica il descrittore di sicurezza fornito. Usa il valore del parametro AclObject come modello e modifica i valori nel descrittore di sicurezza dell'elemento in modo che corrispondano ai valori nel parametro AclObject .
Esempio
Esempio 1: Copiare un descrittore di sicurezza da un file a un altro
$DogACL = Get-Acl -Path "C:\Dog.txt"
Set-Acl -Path "C:\Cat.txt" -AclObject $DogACL
Questi comandi copiano i valori dal descrittore di sicurezza del file Dog.txt al descrittore di sicurezza del file Cat.txt. Quando i comandi sono stati eseguiti, i descrittori di sicurezza dei file Dog.txt e Cat.txt sono identici.
Il primo comando usa il Get-Acl
cmdlet per ottenere il descrittore di sicurezza del file Dog.txt.
L'operatore di assegnazione (=
) archivia il descrittore di sicurezza nel valore della variabile $DogACL.
Il secondo comando usa Set-Acl
per modificare i valori nell'ACL di Cat.txt ai valori in $DogACL
.
Il valore del parametro Path è il percorso del file Cat.txt. Il valore del parametro AclObject è l'ACL del modello, in questo caso l'ACL di Dog.txt come salvato nella $DogACL
variabile.
Esempio 2: Usare l'operatore pipeline per passare un descrittore
Get-Acl -Path "C:\Dog.txt" | Set-Acl -Path "C:\Cat.txt"
Questo comando è quasi uguale al comando dell'esempio precedente, ad eccezione del fatto che usa un operatore pipeline (|
) per inviare il descrittore di sicurezza da un Get-Acl
comando a un Set-Acl
comando.
Il primo comando usa il Get-Acl
cmdlet per ottenere il descrittore di sicurezza del file Dog.txt. L'operatore pipeline (|
) passa un oggetto che rappresenta il descrittore di sicurezza Dog.txt al Set-Acl
cmdlet .
Il secondo comando usa Set-Acl
per applicare il descrittore di sicurezza di Dog.txt a Cat.txt.
Dopo il completamento del comando, i descrittori di sicurezza dei file Dog.txt e Cat.txt saranno identici.
Esempio 3: Applicare un descrittore di sicurezza a più file
$NewAcl = Get-Acl File0.txt
Get-ChildItem -Path "C:\temp" -Recurse -Include "*.txt" -Force | Set-Acl -AclObject $NewAcl
Questi comandi applicano i descrittori di sicurezza nel file File0.txt a tutti i file di testo nella C:\Temp
directory e a tutte le relative sottodirectory.
Il primo comando ottiene il descrittore di sicurezza del file File0.txt nella directory corrente e usa l'operatore di assegnazione (=
) per archiviarlo nella $NewACL
variabile.
Il primo comando nella pipeline usa il cmdlet Get-ChildItem per ottenere tutti i file di testo nella C:\Temp
directory. Il parametro Recurse estende il comando a tutte le sottodirectory di C:\temp
. Il parametro Include limita i file recuperati a quelli con l'estensione del .txt
nome file. Il parametro Force ottiene i file nascosti, che altrimenti verrebbero esclusi. Non è possibile usare c:\temp\*.txt
, perché il parametro Recurse funziona nelle directory e non nei file.
L'operatore pipeline (|
) invia gli oggetti che rappresentano i file recuperati al Set-Acl
cmdlet , che applica il descrittore di sicurezza nel parametro AclObject a tutti i file nella pipeline.
In pratica, è consigliabile usare il parametro WhatIf con tutti i Set-Acl
comandi che possono influire su più di un elemento. In questo caso, il secondo comando nella pipeline sarà Set-Acl -AclObject $NewAcl -WhatIf
. Questo comando elenca i file che saranno interessati dal comando. Dopo aver esaminato il risultato, è possibile eseguire di nuovo il comando senza il parametro WhatIf .
Esempio 4: Disabilitare l'ereditarietà e mantenere le regole di accesso ereditate
$NewAcl = Get-Acl -Path "C:\Pets\Dog.txt"
$isProtected = $true
$preserveInheritance = $true
$NewAcl.SetAccessRuleProtection($isProtected, $preserveInheritance)
Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $NewAcl
Questi comandi disabilitano l'ereditarietà dell'accesso dalle cartelle padre, mantenendo al tempo stesso le regole di accesso ereditate esistenti.
Il primo comando usa il Get-Acl
cmdlet per ottenere il descrittore di sicurezza del file Dog.txt.
Vengono quindi create variabili per convertire le regole di accesso ereditate in regole di accesso esplicite. Per proteggere le regole di accesso associate a questa operazione dall'ereditarietà, impostare la $isProtected
variabile su $true
. Per consentire l'ereditarietà, impostare su $isProtected
$false
. Per altre informazioni, vedere Impostare la protezione delle regole di accesso.
Impostare la $preserveInheritance
variabile su $true
per mantenere le regole di accesso ereditate o $false
rimuovere le regole di accesso ereditate. La protezione delle regole di accesso viene quindi aggiornata usando il metodo SetAccessRuleProtection().
L'ultimo comando usa Set-Acl
per applicare il descrittore di sicurezza di a Dog.txt. Al termine del comando, gli ACL del Dog.txt ereditati dalla cartella Pets verranno applicati direttamente a Dog.txt e i nuovi criteri di accesso aggiunti a Pets non modificheranno l'accesso a Dog.txt.
Esempio 5: Concedere agli amministratori il controllo completo del file
$NewAcl = Get-Acl -Path "C:\Pets\Dog.txt"
# Set properties
$identity = "BUILTIN\Administrators"
$fileSystemRights = "FullControl"
$type = "Allow"
# Create new rule
$fileSystemAccessRuleArgumentList = $identity, $fileSystemRights, $type
$fileSystemAccessRule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $fileSystemAccessRuleArgumentList
# Apply new rule
$NewAcl.SetAccessRule($fileSystemAccessRule)
Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $NewAcl
Questo comando concederà al gruppo BUILTIN\Administrators controllo completo del file Dog.txt.
Il primo comando usa il Get-Acl
cmdlet per ottenere il descrittore di sicurezza del file Dog.txt.
Le variabili successive vengono create per concedere al gruppo BUILTIN\Administrators il controllo completo del file Dog.txt. Variabile $identity
impostata sul nome di un account utente. La $fileSystemRights
variabile impostata su FullControl e può essere uno qualsiasi dei valori FileSystemRights che specifica il tipo di operazione associata alla regola di accesso. La $type
variabile impostata su "Consenti" per specificare se consentire o negare l'operazione. La $fileSystemAccessRuleArgumentList
variabile è un elenco di argomenti da passare quando si crea il nuovo oggetto FileSystemAccessRule . Viene quindi creato un nuovo oggetto FileSystemAccessRule e l'oggetto FileSystemAccessRule viene passato al metodo SetAccessRule(), aggiunge la nuova regola di accesso.
L'ultimo comando usa Set-Acl
per applicare il descrittore di sicurezza di a Dog.txt. Al termine del comando, il gruppo BUILTIN\Administrators avrà il controllo completo del Dog.txt.
Parametri
-AclObject
Specifica un elenco di controllo di accesso (ACL, Access Control List) con i valori di proprietà desiderati. Set-Acl
modifica l'ACL dell'elemento specificato dal parametro Path o InputObject in modo che corrisponda ai valori nell'oggetto di sicurezza specificato.
È possibile salvare l'output di un Get-Acl
comando in una variabile e quindi usare il parametro AclObject per passare la variabile o digitare un Get-Acl
comando.
Tipo: | Object |
Posizione: | 1 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-ClearCentralAccessPolicy
Rimuove i criteri di accesso centrale dall'elemento specificato.
A partire da Windows Server 2012, gli amministratori possono usare Active Directory e Criteri di gruppo per impostare criteri di accesso centrale per utenti e gruppi. Per altre informazioni, vedere Dynamic Controllo di accesso: Scenario Overview.For more information, see Dynamic Controllo di accesso: Scenario Overview.
Questo parametro è stato introdotto in Windows PowerShell 3.0.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Confirm
Richiede conferma prima di eseguire il cmdlet.
Tipo: | SwitchParameter |
Alias: | cf |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Exclude
Omette gli elementi specificati. Il valore di questo parametro qualifica il parametro Path . Immettere un elemento o un modello di percorso, ad esempio *.txt
. I caratteri jolly sono consentiti.
Tipo: | String[] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | True |
-Filter
Specifica un filtro nel formato o nel linguaggio del provider. Il valore di questo parametro qualifica il parametro Path . La sintassi del filtro, incluso l'uso dei caratteri jolly, dipende dal provider. I filtri sono più efficienti rispetto ad altri parametri, perché il provider li applica durante il recupero degli oggetti, invece di filtrare gli oggetti dopo il recupero.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | True |
-Include
Modifica solo gli elementi specificati. Il valore di questo parametro qualifica il parametro Path .
Immettere un elemento o un modello di percorso, ad esempio *.txt
. I caratteri jolly sono consentiti.
Tipo: | String[] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | True |
-InputObject
Modifica il descrittore di sicurezza dell'oggetto specificato. Immettere una variabile che contiene l'oggetto o un comando che lo ottiene.
Non è possibile inviare tramite pipe l'oggetto da modificare in Set-Acl
. Usare invece il parametro InputObject in modo esplicito nel comando .
Questo parametro è stato introdotto in Windows PowerShell 3.0.
Tipo: | PSObject |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-LiteralPath
Modifica il descrittore di sicurezza dell'elemento specificato. A differenza di Path, il valore del parametro LiteralPath viene usato esattamente come viene tipizzato. Nessun carattere viene interpretato come carattere jolly. Se il percorso include caratteri di escape, racchiuderlo tra virgolette singole ('
).
Le virgolette singole indicano a PowerShell di non interpretare alcun carattere come sequenze di escape.
Questo parametro è stato introdotto in Windows PowerShell 3.0.
Tipo: | String[] |
Alias: | PSPath |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-PassThru
Restituisce un oggetto che rappresenta il descrittore di sicurezza che è stato modificato. Per impostazione predefinita, il cmdlet non genera alcun output.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Path
Modifica il descrittore di sicurezza dell'elemento specificato. Immettere il percorso di un elemento, ad esempio un percorso di un file o di una chiave del Registro di sistema. I caratteri jolly sono consentiti.
Se si passa un oggetto di sicurezza a (usando i parametri AclObject o SecurityDescriptor o passando un oggetto di sicurezza da Get-Acl a Set-Acl
Set-Acl
) e si omette il parametro Path (nome e valore), Set-Acl
usa il percorso incluso nell'oggetto di sicurezza.
Tipo: | String[] |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | True |
-WhatIf
Mostra gli effetti dell'esecuzione del cmdlet. Il cmdlet non viene eseguito.
Tipo: | SwitchParameter |
Alias: | wi |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
È possibile inviare tramite pipe un oggetto ACL a questo cmdlet.
È possibile inviare tramite pipe un descrittore di sicurezza a questo cmdlet.
Output
None
Per impostazione predefinita, questo cmdlet non restituisce alcun output.
Quando si usa il parametro PassThru , questo cmdlet restituisce un oggetto di sicurezza. Il tipo di oggetto di sicurezza dipende dal tipo di elemento.
Note
Questo cmdlet è disponibile solo nelle piattaforme Windows.
Il Set-Acl
cmdlet è supportato dal file system di PowerShell e dai provider del Registro di sistema. È perciò possibile usarlo per modificare i descrittori di sicurezza di file, directory e chiavi del Registro di sistema.