Set-Acl

Modifie le descripteur de sécurité d’un élément spécifié, tel qu’un fichier ou une clé de Registre.

Syntaxe

ByPath (Par défaut)

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>]

Description

Cette applet de commande est disponible uniquement sur la plateforme Windows.

L’applet Set-Acl de commande modifie le descripteur de sécurité d’un élément spécifié, tel qu’un fichier ou une clé de Registre, pour qu’il corresponde aux valeurs d’un descripteur de sécurité que vous fournissez.

Pour utiliser Set-Acl, utilisez le paramètre Path ou InputObject pour identifier l’élément dont vous souhaitez modifier le descripteur de sécurité. Ensuite, utilisez les paramètres AclObject ou SecurityDescriptor pour fournir un descripteur de sécurité qui a les valeurs que vous souhaitez appliquer. Set-Acl applique le descripteur de sécurité fourni. Elle utilise la valeur du paramètre AclObject en tant que modèle et modifie les valeurs du descripteur de sécurité de l’élément pour qu’elle corresponde aux valeurs du paramètre AclObject .

Exemples

Exemple 1 : Copier un descripteur de sécurité d’un fichier vers un autre

$DogACL = Get-Acl -Path "C:\Dog.txt"
Set-Acl -Path "C:\Cat.txt" -AclObject $DogACL

Ces commandes copient les valeurs du descripteur de sécurité du fichier Dog.txt vers le descripteur de sécurité du fichier Cat.txt. Une fois les commandes terminées, les descripteurs de sécurité des fichiers Dog.txt et Cat.txt sont identiques.

La première commande utilise l’applet Get-Acl de commande pour obtenir le descripteur de sécurité du fichier Dog.txt. L’opérateur d’affectation (=) stocke le descripteur de sécurité dans la valeur de la variable $DogACL.

La deuxième commande utilise Set-Acl pour modifier les valeurs de la liste de contrôle d’accès de Cat.txt sur les valeurs dans $DogACL.

La valeur du paramètre Path est le chemin d’accès au fichier Cat.txt. La valeur du paramètre AclObject est la liste de contrôle d’accès du modèle, dans ce cas, la liste de contrôle d’accès de Dog.txt enregistrée dans la $DogACL variable.

Exemple 2 : Utiliser l’opérateur de pipeline pour passer un descripteur

Get-Acl -Path "C:\Dog.txt" | Set-Acl -Path "C:\Cat.txt"

Cette commande est presque identique à la commande de l’exemple précédent, sauf qu’elle utilise un opérateur de pipeline (|) pour envoyer le descripteur de sécurité d’une Get-Acl commande à une Set-Acl commande.

La première commande utilise l’applet Get-Acl de commande pour obtenir le descripteur de sécurité du fichier Dog.txt. L’opérateur de pipeline (|) transmet un objet qui représente le descripteur de sécurité Dog.txt à l’applet Set-Acl de commande.

La deuxième commande utilise Set-Acl pour appliquer le descripteur de sécurité de Dog.txt à Cat.txt. Une fois la commande terminée, les listes de contrôle d’accès des fichiers Dog.txt et Cat.txt sont identiques.

Exemple 3 : Appliquer un descripteur de sécurité à plusieurs fichiers

$NewAcl = Get-Acl File0.txt
Get-ChildItem -Path "C:\temp" -Recurse -Include "*.txt" -Force | Set-Acl -AclObject $NewAcl

Ces commandes appliquent les descripteurs de sécurité dans le fichier File0.txt à tous les fichiers texte du C:\Temp répertoire et à tous ses sous-répertoires.

La première commande obtient le descripteur de sécurité du fichier File0.txt dans le répertoire actif et utilise l’opérateur d’affectation (=) pour le stocker dans la $NewACL variable.

La première commande du pipeline utilise l’applet de commande Get-ChildItem pour obtenir tous les fichiers texte dans le C:\Temp répertoire. Le paramètre Recurse étend la commande à tous les sous-répertoires de C:\temp. Le paramètre Include limite les fichiers récupérés à ceux avec l’extension de nom de .txt fichier. Le paramètre Force obtient les fichiers masqués, qui seraient autrement exclus. (Vous ne pouvez pas utiliser C:\temp\*.txt, car le paramètre Recurse fonctionne sur les répertoires, et non sur les fichiers.)

L’opérateur de pipeline (|) envoie les objets représentant les fichiers récupérés à l’applet Set-Acl de commande, qui applique le descripteur de sécurité dans le paramètre AclObject à tous les fichiers du pipeline.

Dans la pratique, il est préférable d’utiliser le paramètre WhatIf avec toutes les Set-Acl commandes qui peuvent affecter plusieurs éléments. Dans ce cas, la deuxième commande dans le pipeline serait Set-Acl -AclObject $NewAcl -WhatIf. Cette commande répertorie les fichiers qui seraient affectés par la commande. Après avoir examiné le résultat, vous pouvez réexécuter la commande sans le paramètre WhatIf .

Exemple 4 : Désactiver l’héritage et conserver les règles d’accès héritées

$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

Ces commandes désactivent l’héritage d’accès à partir de dossiers parents, tout en conservant les règles d’accès héritées existantes.

La première commande utilise l’applet Get-Acl de commande pour obtenir le descripteur de sécurité du Dog.txt fichier.

Ensuite, les variables sont créées pour convertir les règles d’accès héritées en règles d’accès explicites. Pour protéger les règles d’accès associées à cet héritage, définissez la $isProtected variable sur $true. Pour autoriser l’héritage, définissez sur $isProtected$false. Pour plus d’informations, consultez définir la protection des règles d’accès.

Définissez la $preserveInheritance variable pour $true conserver les règles d’accès héritées ou $false pour supprimer les règles d’accès héritées. Ensuite, la protection des règles d’accès est mise à jour à l’aide de la méthode SetAccessRuleProtection().

La dernière commande utilise Set-Acl pour appliquer le descripteur de sécurité à Dog.txt. Une fois la commande terminée, les listes de contrôle d’accès du Dog.txt dossier Pets héritées sont appliquées directement à Dog.txt, et les nouvelles stratégies d’accès ajoutées aux animaux de compagnie ne modifient pas l’accès.Dog.txt

Exemple 5 : Accorder aux administrateurs un contrôle total du fichier

$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

Cette commande accorde au groupe BUILTIN\Administrators le contrôle total du Dog.txt fichier.

La première commande utilise l’applet Get-Acl de commande pour obtenir le descripteur de sécurité du Dog.txt fichier.

Les variables suivantes sont créées pour accorder au groupe BUILTIN\Administrators le contrôle total du Dog.txt fichier. Variable $identity définie sur le nom d’un compte d’utilisateur. La $fileSystemRights variable définie sur FullControl et peut être une des valeurs FileSystemRights qui spécifie le type d’opération associé à la règle d’accès. La $type variable définie sur « Autoriser » spécifie s’il faut autoriser ou refuser l’opération. La $fileSystemAccessRuleArgumentList variable est une liste d’arguments à passer lors de la création de l’objet FileSystemAccessRule . Ensuite, un nouvel objet FileSystemAccessRule est créé et l’objet FileSystemAccessRule est passé à la méthode SetAccessRule(), ajoute la nouvelle règle d’accès.

La dernière commande utilise Set-Acl pour appliquer le descripteur de sécurité à Dog.txt. Une fois la commande terminée, le groupe BUILTIN\Administrators aura le contrôle total du Dog.txtfichier .

Paramètres

-AclObject

Spécifie une liste de contrôle d’accès avec les valeurs de propriété souhaitées. Set-Acl modifie la liste de contrôle d’accès de l’élément spécifié par le paramètre Path ou InputObject pour qu’elle corresponde aux valeurs de l’objet de sécurité spécifié.

Vous pouvez enregistrer la sortie d’une Get-Acl commande dans une variable, puis utiliser le paramètre AclObject pour passer la variable ou taper une Get-Acl commande.

Propriétés du paramètre

Type:Object
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:1
Obligatoire:True
Valeur du pipeline:True
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-ClearCentralAccessPolicy

Supprime la stratégie d’accès central de l’élément spécifié.

À compter de Windows Server 2012, les administrateurs peuvent utiliser Active Directory et la stratégie de groupe pour définir des stratégies d’accès centralisées pour les utilisateurs et les groupes. Pour plus d’informations, consultez Dynamic Access Control : Scenario Overview.

Ce paramètre a été introduit dans Windows PowerShell 3.0.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:False
Prend en charge les caractères génériques:False
DontShow:False
Alias:PSPath, DP

Jeux de paramètres

ByPath
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
ByLiteralPath
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Confirm

Vous invite à confirmer avant d’exécuter l’applet de commande.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:False
Prend en charge les caractères génériques:False
DontShow:False
Alias:Cf

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Exclude

Omettez les éléments spécifiés. La valeur de ce paramètre qualifie le paramètre Path. Entrez un élément de chemin ou un modèle, tel que *.txt. Les caractères génériques sont autorisés.

Propriétés du paramètre

Type:

String[]

Valeur par défaut:None
Prend en charge les caractères génériques:True
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Filter

Spécifie un filtre dans le format ou la langue du fournisseur. La valeur de ce paramètre qualifie le paramètre Path. La syntaxe du filtre, y compris l’utilisation de caractères génériques, dépend du fournisseur. Les filtres sont plus efficaces que d’autres paramètres, car le fournisseur les applique lors de la récupération des objets, plutôt que de filtrer les objets après leur récupération.

Propriétés du paramètre

Type:String
Valeur par défaut:None
Prend en charge les caractères génériques:True
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Include

Modifie uniquement les éléments spécifiés. La valeur de ce paramètre qualifie le paramètre Path. Entrez un élément de chemin ou un modèle, tel que *.txt. Les caractères génériques sont autorisés.

Propriétés du paramètre

Type:

String[]

Valeur par défaut:None
Prend en charge les caractères génériques:True
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-InputObject

Modifie le descripteur de sécurité de l’objet spécifié. Entrez une variable qui contient l’objet ou une commande qui obtient l’objet.

Vous ne pouvez pas diriger l’objet vers Set-Acl. Utilisez plutôt le paramètre InputObject explicitement dans la commande.

Ce paramètre a été introduit dans Windows PowerShell 3.0.

Propriétés du paramètre

Type:PSObject
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

ByInputObject
Position:0
Obligatoire:True
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:True
Valeur des arguments restants:False

-LiteralPath

Modifie le descripteur de sécurité de l’élément spécifié. Contrairement à Path, la valeur du paramètre LiteralPath est utilisée exactement comme il est typé. Aucun caractère n’est interprété en tant que caractère générique. Si le chemin inclut des caractères d’échappement, placez-le entre guillemets simples ('). Les guillemets simples indiquent à PowerShell de ne pas interpréter de caractères comme séquences d’échappement.

Ce paramètre a été introduit dans Windows PowerShell 3.0.

Propriétés du paramètre

Type:

String[]

Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False
Alias:PSPath

Jeux de paramètres

ByLiteralPath
Position:Named
Obligatoire:True
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:True
Valeur des arguments restants:False

-PassThru

Retourne un objet qui représente le descripteur de sécurité qui a été modifié. Par défaut, cette applet de commande ne génère aucune sortie.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Path

Modifie le descripteur de sécurité de l’élément spécifié. Entrez le chemin d’accès à un élément, tel qu’un chemin d’accès à un fichier ou à une clé de Registre. Les caractères génériques sont autorisés.

Si vous passez un objet de sécurité à Set-Acl (à l’aide des paramètres AclObject ou SecurityDescriptor ou en passant un objet de sécurité à partir de Get-Acl ), Set-Aclet que vous omettez le paramètre Path (nom et valeur), Set-Acl utilisez le chemin d’accès inclus dans l’objet de sécurité.

Propriétés du paramètre

Type:

String[]

Valeur par défaut:None
Prend en charge les caractères génériques:True
DontShow:False

Jeux de paramètres

ByPath
Position:0
Obligatoire:True
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:True
Valeur des arguments restants:False

-WhatIf

Affiche ce qui se passerait si l’applet de commande s’exécute. L’applet de commande ne s’exécute pas.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:False
Prend en charge les caractères génériques:False
DontShow:False
Alias:Wi

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

CommonParameters

Cette applet de commande prend en charge les paramètres courants : -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction et -WarningVariable. Pour plus d’informations, consultez about_CommonParameters.

Entrées

ObjectSecurity

Vous pouvez diriger un objet ACL vers cette applet de commande.

CommonSecurityDescriptor

Vous pouvez diriger un descripteur de sécurité vers cette applet de commande.

Sorties

None

Par défaut, cette applet de commande ne retourne aucune sortie.

FileSecurity

Lorsque vous utilisez le paramètre PassThru , cette applet de commande retourne un objet de sécurité. Le type de l’objet de sécurité dépend du type de l’élément.

Notes

Cette applet de commande est disponible uniquement sur les plateformes Windows.

L’applet Set-Acl de commande est prise en charge par les fournisseurs PowerShell FileSystem et Registry. Par conséquent, vous pouvez l’utiliser pour modifier les descripteurs de sécurité des fichiers, des répertoires et des clés de Registre.