Share via


Set-Acl

Hiermee wijzigt u de beveiligingsdescriptor van een opgegeven item, zoals een bestand of een registersleutel.

Syntax

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

Description

Deze cmdlet is alleen beschikbaar op het Windows-platform.

De Set-Acl cmdlet wijzigt de security descriptor van een opgegeven item, zoals een bestand of een registersleutel, zodat deze overeenkomt met de waarden in een security descriptor die u opgeeft.

Als u wilt gebruiken Set-Acl, gebruikt u de parameter Path of InputObject om het item te identificeren waarvan u de beveiligingsdescriptor wilt wijzigen. Gebruik vervolgens de parameters AclObject of SecurityDescriptor om een beveiligingsdescriptor op te geven met de waarden die u wilt toepassen. Set-Acl past de opgegeven beveiligingsdescriptor toe. De waarde van de parameter AclObject wordt als model gebruikt en de waarden in de security descriptor van het item worden gewijzigd zodat deze overeenkomen met de waarden in de parameter AclObject .

Voorbeelden

Voorbeeld 1: Een beveiligingsdescriptor van het ene bestand naar het andere kopiëren

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

Met deze opdrachten worden de waarden van de security descriptor van het Dog.txt-bestand gekopieerd naar de security descriptor van het Cat.txt-bestand. Wanneer de opdrachten zijn voltooid, zijn de beveiligingsdescriptors van de Dog.txt- en Cat.txt-bestanden identiek.

De eerste opdracht gebruikt de Get-Acl cmdlet om de beveiligingsdescriptor van het Dog.txt-bestand op te halen. De toewijzingsoperator (=) slaat de security descriptor op in de waarde van de variabele $DogACL.

De tweede opdracht gebruikt Set-Acl om de waarden in de ACL van Cat.txt te wijzigen in de waarden in $DogACL.

De waarde van de parameter Path is het pad naar het Cat.txt-bestand. De waarde van de parameter AclObject is de model-ACL, in dit geval de ACL van Dog.txt zoals opgeslagen in de $DogACL variabele.

Voorbeeld 2: de pijplijnoperator gebruiken om een descriptor door te geven

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

Deze opdracht is bijna hetzelfde als de opdracht in het vorige voorbeeld, behalve dat er een pijplijnoperator (|) wordt gebruikt om de beveiligingsdescriptor van een opdracht naar een Set-AclGet-Acl opdracht te verzenden.

De eerste opdracht gebruikt de Get-Acl cmdlet om de beveiligingsdescriptor van het Dog.txt-bestand op te halen. De pijplijnoperator (|) geeft een object dat de Dog.txt security descriptor vertegenwoordigt door aan de Set-Acl cmdlet.

Met de tweede opdracht wordt de Set-Acl beveiligingsdescriptor van Dog.txt toegepast op Cat.txt. Wanneer de opdracht is voltooid, zijn de ACL's van de Dog.txt- en Cat.txt-bestanden identiek.

Voorbeeld 3: Een beveiligingsdescriptor toepassen op meerdere bestanden

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

Met deze opdrachten worden de beveiligingsdescriptors in het File0.txt-bestand toegepast op alle tekstbestanden in de C:\Temp map en alle bijbehorende submappen.

Met de eerste opdracht wordt de beveiligingsdescriptor van het File0.txt-bestand in de huidige map opgehaald en wordt de toewijzingsoperator (=) gebruikt om deze op te slaan in de $NewACL variabele.

De eerste opdracht in de pijplijn gebruikt de cmdlet Get-ChildItem om alle tekstbestanden in de C:\Temp map op te halen. De parameter Recurse breidt de opdracht uit naar alle submappen van C:\temp. Met de parameter Include worden de opgehaalde bestanden beperkt tot bestanden met de .txt bestandsnaamextensie. Met de parameter Force worden verborgen bestanden opgehaald, die anders zouden worden uitgesloten. (U kunt niet gebruiken c:\temp\*.txtomdat de parameter Recurse werkt op mappen, niet op bestanden.)

De pijplijnoperator (|) verzendt de objecten die de opgehaalde bestanden vertegenwoordigen naar de Set-Acl cmdlet, die de beveiligingsdescriptor in de parameter AclObject toepast op alle bestanden in de pijplijn.

In de praktijk kunt u het beste de parameter WhatIf gebruiken met alle Set-Acl opdrachten die van invloed kunnen zijn op meer dan één item. In dit geval is Set-Acl -AclObject $NewAcl -WhatIfde tweede opdracht in de pijplijn . Met deze opdracht worden de bestanden weergegeven die worden beïnvloed door de opdracht. Nadat u het resultaat hebt gecontroleerd, kunt u de opdracht opnieuw uitvoeren zonder de parameter WhatIf .

Voorbeeld 4: Overname uitschakelen en overgenomen toegangsregels behouden

$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

Met deze opdrachten wordt de overname van toegang vanuit bovenliggende mappen uitgeschakeld, terwijl de bestaande overgenomen toegangsregels behouden blijven.

De eerste opdracht gebruikt de Get-Acl cmdlet om de beveiligingsdescriptor van het Dog.txt-bestand op te halen.

Vervolgens worden variabelen gemaakt om de overgenomen toegangsregels te converteren naar expliciete toegangsregels. Als u de toegangsregels die hieraan zijn gekoppeld, wilt beveiligen tegen overname, stelt u de $isProtected variabele in op $true. Als u overname wilt toestaan, stelt u in $isProtected op $false. Zie Beveiliging van toegangsregels instellen voor meer informatie.

Stel de $preserveInheritance variabele in op $true om overgenomen toegangsregels te behouden of $false om overgenomen toegangsregels te verwijderen. Vervolgens wordt de beveiliging van de toegangsregel bijgewerkt met behulp van de methode SetAccessRuleProtection().

De laatste opdracht gebruikt Set-Acl om de security descriptor van toe te passen op Dog.txt. Wanneer de opdracht is voltooid, worden de ACL's van de Dog.txt die zijn overgenomen uit de map Huisdieren rechtstreeks toegepast op Dog.txt en wordt de toegang tot Dog.txt niet gewijzigd door nieuw toegangsbeleid dat is toegevoegd aan Huisdieren.

Voorbeeld 5: Beheerders volledig beheer van het bestand verlenen

$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

Met deze opdracht verleent u de groep BUILTIN\Administrators volledig beheer van het Dog.txt-bestand.

De eerste opdracht gebruikt de Get-Acl cmdlet om de beveiligingsdescriptor van het Dog.txt-bestand op te halen.

De volgende variabelen worden gemaakt om de groep BUILTIN\Administrators volledig beheer van het Dog.txt-bestand te verlenen. De $identity variabele is ingesteld op de naam van een gebruikersaccount. De $fileSystemRights variabele is ingesteld op FullControl en kan een van de FileSystemRights-waarden zijn die het type bewerking aangeeft dat is gekoppeld aan de toegangsregel. De $type variabele is ingesteld op Toestaan om aan te geven of de bewerking moet worden toegestaan of geweigerd. De $fileSystemAccessRuleArgumentList variabele is een argumentenlijst die moet worden doorgegeven bij het maken van het nieuwe FileSystemAccessRule-object . Vervolgens wordt een nieuw FileSystemAccessRule-object gemaakt en wordt het object FileSystemAccessRule doorgegeven aan de methode SetAccessRule(). Hiermee wordt de nieuwe toegangsregel toegevoegd.

De laatste opdracht gebruikt Set-Acl om de security descriptor van toe te passen op Dog.txt. Wanneer de opdracht is voltooid, heeft de groep BUILTIN\Administrators volledige controle over de Dog.txt.

Parameters

-AclObject

Hiermee geeft u een ACL met de gewenste eigenschapswaarden. Set-Acl wijzigt de ACL van het item dat is opgegeven met de parameter Path of InputObject zodat deze overeenkomt met de waarden in het opgegeven beveiligingsobject.

U kunt de uitvoer van een Get-Acl opdracht opslaan in een variabele en vervolgens de parameter AclObject gebruiken om de variabele door te geven of een Get-Acl opdracht typen.

Type:Object
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ClearCentralAccessPolicy

Hiermee verwijdert u het centrale toegangsbeleid uit het opgegeven item.

Vanaf Windows Server 2012 kunnen beheerders Active Directory en groepsbeleid gebruiken om centraal toegangsbeleid voor gebruikers en groepen in te stellen. Zie Dynamische Access Control: Scenario-overzicht voor meer informatie.

Deze parameter is geïntroduceerd in Windows PowerShell 3.0.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Hiermee wordt u gevraagd om bevestiging voordat u de cmdlet uitvoert.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Exclude

Laat de opgegeven items weg. De waarde van deze parameter komt in aanmerking voor de path-parameter . Voer een padelement of -patroon in, zoals *.txt. Jokertekens zijn toegestaan.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Filter

Hiermee geeft u een filter op in de indeling of taal van de provider. De waarde van deze parameter komt in aanmerking voor de path-parameter . De syntaxis van het filter, inclusief het gebruik van jokertekens, is afhankelijk van de provider. Filters zijn efficiënter dan andere parameters, omdat de provider ze toepast bij het ophalen van de objecten, in plaats van dat PowerShell de objecten filtert nadat ze zijn opgehaald.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Include

Hiermee worden alleen de opgegeven items gewijzigd. De waarde van deze parameter komt in aanmerking voor de path-parameter . Voer een padelement of -patroon in, zoals *.txt. Jokertekens zijn toegestaan.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-InputObject

Hiermee wijzigt u de beveiligingsdescriptor van het opgegeven object. Voer een variabele in die het object bevat of een opdracht waarmee het object wordt opgehaald.

U kunt het object dat u wilt wijzigen niet doorsluisen naar Set-Acl. Gebruik in plaats daarvan de parameter InputObject expliciet in de opdracht .

Deze parameter is geïntroduceerd in Windows PowerShell 3.0.

Type:PSObject
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

Hiermee wijzigt u de beveiligingsdescriptor van het opgegeven item. In tegenstelling tot Path wordt de waarde van de parameter LiteralPath precies gebruikt zoals deze is getypt. Geen tekens worden geïnterpreteerd als jokertekens. Als het pad escape-tekens bevat, plaatst u het tussen enkele aanhalingstekens ('). Enkele aanhalingstekens geven PowerShell aan dat geen tekens als escape-reeksen worden geïnterpreteerd.

Deze parameter is geïntroduceerd in Windows PowerShell 3.0.

Type:String[]
Aliases:PSPath
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Passthru

Retourneert een object dat de beveiligingsdescriptor vertegenwoordigt die is gewijzigd. Deze cmdlet genereert standaard geen uitvoer.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Hiermee wijzigt u de beveiligingsdescriptor van het opgegeven item. Voer het pad naar een item in, zoals een pad naar een bestand of registersleutel. Jokertekens zijn toegestaan.

Als u een beveiligingsobject doorgeeft aan Set-Acl (met behulp van de parameters AclObject of SecurityDescriptor of door een beveiligingsobject van Get-Acl door te geven aan Set-Acl), en u de padparameter (naam en waarde) weglaat, Set-Acl wordt het pad gebruikt dat is opgenomen in het beveiligingsobject.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-WhatIf

Hiermee wordt weergegeven wat er zou gebeuren als u de cmdlet uitvoert. De cmdlet wordt niet uitgevoerd.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Invoerwaarden

System.Security.AccessControl.ObjectSecurity, System.Security.AccessControl.CommonSecurityDescriptor

U kunt een ACL-object of een beveiligingsdescriptor doorspeken naar Set-Acl.

Uitvoerwaarden

FileSecurity

Genereert standaard Set-Acl geen uitvoer. Als u echter de parameter Passthru gebruikt, wordt er een beveiligingsobject gegenereerd. Het type van het beveiligingsobject is afhankelijk van het type item.

Notities

Deze cmdlet is alleen beschikbaar op Windows-platforms.

De Set-Acl cmdlet wordt ondersteund door het PowerShell-bestandssysteem en de registerproviders. Als zodanig kunt u het gebruiken om de beveiligingsdescriptors van bestanden, mappen en registersleutels te wijzigen.