Condividi tramite


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>
    [-ClearCentralAccessPolicy]
    [-PassThru]
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

ByInputObject

Set-Acl
    [-InputObject] <PSObject>
    [-AclObject] <Object>
    [-PassThru]
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

ByLiteralPath

Set-Acl
    [-AclObject] <Object>
    -LiteralPath <String[]>
    [-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 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 Dog.txt file al descrittore di sicurezza del file di Cat.txt. Al termine dei comandi, i descrittori di sicurezza dei Dog.txt file e Cat.txt sono identici.

Il primo comando usa il Get-Acl cmdlet per ottenere il descrittore di sicurezza del Dog.txt file. L'operatore di assegnazione (=) archivia il descrittore di sicurezza nel valore della $DogACL variabile.

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 Dog.txt file. L'operatore pipeline (|) passa un oggetto che rappresenta il Dog.txt descrittore di sicurezza al Set-Acl cmdlet .

Il secondo comando usa Set-Acl per applicare il descrittore di sicurezza di Dog.txt a Cat.txt. Al termine del comando, gli elenchi di controllo di accesso dei Dog.txt file 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 Dog.txt file.

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 di che Dog.txt sono stati 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
$newParams = @{
  TypeName     = 'System.Security.AccessControl.FileSystemAccessRule'
    ArgumentList = $fileSystemAccessRuleArgumentList
}
$fileSystemAccessRule = New-Object @newParams
# Apply new rule
$NewAcl.SetAccessRule($fileSystemAccessRule)
Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $NewAcl

Questo comando concederà al gruppo BUILTIN\Administrators il controllo completo del Dog.txt file.

Il primo comando usa il Get-Acl cmdlet per ottenere il descrittore di sicurezza del Dog.txt file.

Le variabili successive vengono create per concedere al gruppo BUILTIN\Administrators il controllo completo del Dog.txt file. 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 di 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

-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
Alias:PSPath, UP

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 (usando 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 usa 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

-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

Questo cmdlet è disponibile solo nelle piattaforme Windows.

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.