Set-Acl
Modifica il descrittore di sicurezza di un elemento specificato, ad esempio un file o una chiave del Registro di sistema.
Sintassi
ByPath (Impostazione predefinita)
Set-Acl
[-Path] <String[]>
[-AclObject] <Object>
[[-CentralAccessPolicy] <String>]
[-ClearCentralAccessPolicy]
[-PassThru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
ByInputObject
Set-Acl
[-InputObject] <PSObject>
[-AclObject] <Object>
[-PassThru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
ByLiteralPath
Set-Acl
[-AclObject] <Object>
[[-CentralAccessPolicy] <String>]
-LiteralPath <String[]>
[-ClearCentralAccessPolicy]
[-PassThru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
Descrizione
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 di un descrittore di sicurezza fornito dall'utente.
Per utilizzare Set-Acl, utilizzare il parametro Path o InputObject per identificare l'elemento di cui si desidera modificare il descrittore di sicurezza. Utilizzare quindi i parametri AclObject o SecurityDescriptor per fornire un descrittore di sicurezza con i valori che si desidera applicare.
Set-Acl Applica il descrittore di sicurezza fornito. Utilizza 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 di Dog.txt al descrittore di sicurezza del file di Cat.txt. Al termine dei comandi, 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 di 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 di Dog.txt. L'operatore pipeline (|) passa un oggetto che rappresenta il descrittore di sicurezza Dog.txt al Set-Acl cmdlet .
Il secondo comando viene utilizzato Set-Acl per applicare il descrittore di sicurezza di Dog.txt a Cat.txt.
Al termine del comando, gli ACL dei file Dog.txt e Cat.txt sono 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 consente di ottenere 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 utilizzare 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 sarebbero interessati dal comando. Dopo aver esaminato il risultato, è possibile eseguire nuovamente 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 di 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.txte 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 di 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 ACL con i valori delle 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.
Proprietà dei parametri
| Tipo: | Object |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | 1 |
| Obbligatorio: | True |
| Valore dalla pipeline: | True |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-CentralAccessPolicy
Stabilisce o modifica i criteri di accesso centrale dell'elemento. Immettere l'ID CAP o il nome descrittivo di un criterio di accesso centrale nel computer.
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 Controllo dinamico degli accessi: Panoramica dello scenario.
Questo parametro è stato introdotto in Windows PowerShell 3.0.
Proprietà dei parametri
| Tipo: | String |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
ByPath
| Posizione: | 2 |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | True |
| Valore dagli argomenti rimanenti: | False |
ByLiteralPath
| Posizione: | 2 |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | True |
| Valore dagli argomenti rimanenti: | 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 Controllo dinamico degli accessi: Panoramica dello scenario.
Questo parametro è stato introdotto in Windows PowerShell 3.0.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | False |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
ByPath
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
ByLiteralPath
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Confirm
Richiede conferma prima di eseguire il cmdlet.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | False |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | cfr |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | 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. Sono consentiti i metacaratteri.
Proprietà dei parametri
| Tipo: | String[] |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | True |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Filter
Specifica un filtro nel formato o nella lingua del provider. Il valore di questo parametro qualifica il parametro Path. La sintassi del filtro, incluso l'uso di 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.
Proprietà dei parametri
| Tipo: | String |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | True |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-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. Sono consentiti i metacaratteri.
Proprietà dei parametri
| Tipo: | String[] |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | True |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-InputObject
Modifica il descrittore di sicurezza dell'oggetto specificato. Immettere una variabile contenente l'oggetto o un comando che ottiene l'oggetto .
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.
Proprietà dei parametri
| Tipo: | PSObject |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
ByInputObject
| Posizione: | 0 |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | True |
| Valore dagli argomenti rimanenti: | False |
-LiteralPath
Modifica il descrittore di sicurezza dell'elemento specificato. A differenza di Path, il valore del parametro LiteralPath viene usato esattamente come viene digitato. Nessun carattere viene interpretato come metacaratteri. 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.
Proprietà dei parametri
| Tipo: | String[] |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | PSPath |
Set di parametri
ByLiteralPath
| Posizione: | Named |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | True |
| Valore dagli argomenti rimanenti: | False |
-PassThru
Restituisce un oggetto che rappresenta il descrittore di sicurezza che è stato modificato. Per impostazione predefinita, questo cmdlet non genera alcun output.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Path
Modifica il descrittore di sicurezza dell'elemento specificato. Immettere il percorso di un elemento, ad esempio il percorso di un file o di una chiave del Registro di sistema. Sono consentiti i metacaratteri.
Se si passa un oggetto di sicurezza a Set-Acl (utilizzando i parametri AclObject o SecurityDescriptor o passando un oggetto di sicurezza da Get-Acl a Set-Acl) e si omette il parametro Path (nome e valore), Set-Acl viene utilizzato il percorso incluso nell'oggetto di sicurezza.
Proprietà dei parametri
| Tipo: | String[] |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | True |
| DontShow: | False |
Set di parametri
ByPath
| Posizione: | 0 |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | True |
| Valore dagli argomenti rimanenti: | False |
-UseTransaction
Include il comando nella transazione attiva. Questo parametro è valido solo quando è in corso una transazione. Per altre informazioni, vedere about_Transactions.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | False |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | usetx |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-WhatIf
Mostra gli effetti dell'esecuzione del cmdlet. Il cmdlet non viene eseguito.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | False |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | Wi |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
CommonParameters
Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.
Input
ObjectSecurity
È possibile inviare tramite pipe un oggetto ACL a questo cmdlet.
CommonSecurityDescriptor
È possibile inviare tramite pipe un descrittore di sicurezza a questo cmdlet.
Output
None
Per impostazione predefinita, questo cmdlet non restituisce alcun output.
FileSecurity
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
Il Set-Acl cmdlet è supportato dai provider di FileSystem e Registro di sistema di PowerShell. Pertanto, è possibile utilizzarlo per modificare i descrittori di sicurezza di file, directory e chiavi di registro.