Set-Acl
Hiermee wijzigt u de beveiligingsdescriptor van een opgegeven item, zoals een bestand of een registersleutel.
Syntaxis
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 beveiligingsdescriptor van een opgegeven item, zoals een bestand of een registersleutel, zodat deze overeenkomt met de waarden in een beveiligingsdescriptor die u opgeeft.
Als u Set-Acl
wilt gebruiken, 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 beveiligingsdescriptor toe die wordt opgegeven. Hierbij wordt de waarde van de parameter AclObject als model gebruikt en worden de waarden in de beveiligingsdescriptor van het item gewijzigd zodat deze overeenkomt met de waarden in de parameter AclObject.
Voorbeelden
Voorbeeld 1: Een beveiligingsdescriptor kopiëren van het ene bestand naar het andere
$DogACL = Get-Acl -Path "C:\Dog.txt"
Set-Acl -Path "C:\Cat.txt" -AclObject $DogACL
Met deze opdrachten worden de waarden uit de beveiligingsdescriptor van het Dog.txt
-bestand gekopieerd naar de beveiligingsdescriptor 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 maakt gebruik van de Get-Acl
-cmdlet om de beveiligingsdescriptor van het Dog.txt
-bestand op te halen.
De toewijzingsoperator (=
) slaat de beveiligingsdescriptor op in de waarde van de $DogACL
variabele.
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 ACL van het model, 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 Get-Acl
opdracht naar een Set-Acl
opdracht te verzenden.
De eerste opdracht maakt gebruik van de Get-Acl
-cmdlet om de beveiligingsdescriptor van het Dog.txt
-bestand op te halen.
De pijplijnoperator (|
) geeft een object door dat de Dog.txt
beveiligingsdescriptor aan de Set-Acl
-cmdlet vertegenwoordigt.
De tweede opdracht gebruikt Set-Acl
om de beveiligingsdescriptor van Dog.txt
toe te passen 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 map C:\Temp
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 het op te slaan in de $NewACL
variabele.
De eerste opdracht in de pijplijn maakt gebruik van de Get-ChildItem cmdlet om alle tekstbestanden op te halen in de C:\Temp
map. De parameter Recurse breidt de opdracht uit naar alle submappen van C:\temp
. De parameter Include beperkt de bestanden die zijn opgehaald aan bestanden met de bestandsextensie .txt
. De Force parameter haalt verborgen bestanden op, die anders zouden worden uitgesloten. (U kunt c:\temp\*.txt
niet gebruiken, omdat de parameter Recurse werkt in mappen, niet op bestanden.)
De pijplijnoperator (|
) verzendt de objecten die de opgehaalde bestanden vertegenwoordigen naar de cmdlet Set-Acl
, waarmee de beveiligingsdescriptor in de parameter AclObject wordt toegepast 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 zou de tweede opdracht in de pijplijn commando Set-Acl -AclObject $NewAcl -WhatIf
zijn. Met deze opdracht worden de bestanden vermeld die worden beïnvloed door de opdracht. Nadat u het resultaat hebt gecontroleerd, kunt u de opdracht opnieuw uitvoeren zonder de WhatIf parameter.
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 nog steeds behouden blijven.
De eerste opdracht maakt gebruik van 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 wilt beveiligen die aan deze overname zijn gekoppeld, stelt u de $isProtected
variabele in op $true
. Als u overname wilt toestaan, stelt u $isProtected
in op $false
. Zie toegangsregelbeveiliging instellenvoor meer informatie.
Stel de variabele $preserveInheritance
in op $true
om overgenomen toegangsregels of $false
te behouden 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 beveiligingsdescriptor van Dog.txt
toe te passen. Wanneer de opdracht is voltooid, worden de ACL's van de Dog.txt
, die zijn geërfd van de map Huisdieren, rechtstreeks op Dog.txt
toegepast. Nieuwe toegangsbeleidsregels die aan de map Huisdieren worden toegevoegd, zullen de toegang tot Dog.txt
niet wijzigen.
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
$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
Met deze opdracht verleent u de BUILTIN\Administrators groep Volledig beheer van het Dog.txt
bestand.
De eerste opdracht maakt gebruik van de Get-Acl
-cmdlet om de beveiligingsdescriptor van het Dog.txt
-bestand op te halen.
Volgende variabelen worden gemaakt om de BUILTIN\Administrators groep volledig beheer van het Dog.txt
-bestand te verlenen. De variabele $identity
wordt ingesteld op de naam van een -gebruikersaccount. De variabele $fileSystemRights
ingesteld op FullControl en kan een van de FileSystemRights waarden zijn waarmee het type bewerking wordt opgegeven dat is gekoppeld aan de toegangsregel. De $type
variabele ingesteld op "Toestaan" bepaalt of de bewerking mag worden toegestaan of geweigerd. De $fileSystemAccessRuleArgumentList
variabele is een lijst met argumenten die moet worden doorgegeven bij het maken van het nieuwe FileSystemAccessRule-object. Vervolgens wordt een nieuw FileSystemAccessRule--object gemaakt en wordt het FileSystemAccessRule-object doorgegeven aan de Methode SetAccessRule(), wordt de nieuwe toegangsregel toegevoegd.
De laatste opdracht gebruikt Set-Acl
om de beveiligingsdescriptor van Dog.txt
toe te passen. Wanneer de opdracht is voltooid, heeft de BUILTIN\Administrators groep volledige controle over de Dog.txt
.
Parameters
-AclObject
Specificeert een ACL met de gewenste eigenschapswaarden.
Set-Acl
wijzigt de ACL van het item dat is opgegeven door de Path of InputObject parameter 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 |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | 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 in te stellen voor gebruikers en groepen. Zie Dynamisch toegangsbeheer: Scenariooverzichtvoor meer informatie.
Deze parameter is geïntroduceerd in Windows PowerShell 3.0.
Type: | SwitchParameter |
Aliassen: | PSPath, LP |
Position: | Named |
Default value: | False |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Confirm
U wordt gevraagd om bevestiging voordat u de cmdlet uitvoert.
Type: | SwitchParameter |
Aliassen: | cf |
Position: | Named |
Default value: | False |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Exclude
Hiermee worden de opgegeven items weggelaten. De waarde van deze parameter komt in aanmerking voor de parameter Path. Voer een padelement of patroon in, zoals *.txt
. Jokertekens zijn toegestaan.
Type: | String[] |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | True |
-Filter
Hiermee specificeert u een filter in de taal of indeling van de provider. De waarde van deze parameter komt in aanmerking voor de parameter Path. 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 deze toepast bij het ophalen van de objecten in plaats van PowerShell de objecten te laten filteren nadat ze zijn opgehaald.
Type: | String |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | True |
-Include
Alleen de opgegeven items worden gewijzigd. De waarde van deze parameter komt in aanmerking voor de parameter Path.
Voer een padelement of patroon in, zoals *.txt
. Jokertekens zijn toegestaan.
Type: | String[] |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | True |
-InputObject
Hiermee wijzigt u de beveiligingsdescriptor van het opgegeven object. Voer een variabele in die het object of een opdracht bevat waarmee het object wordt opgehaald.
U kunt het object niet doorsturen om te wijzigen in 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 |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
-LiteralPath
Hiermee wijzigt u de beveiligingsdescriptor van het opgegeven item. In tegenstelling tot Pad, wordt de waarde van de parameter LiteralPath exact gebruikt zoals deze is getypt. Er worden geen tekens geïnterpreteerd als jokertekens. Als het pad escapetekens bevat, plaatst u het tussen enkele aanhalingstekens ('
).
Enkele aanhalingstekens geven aan PowerShell aan dat er geen tekens als escape-sequenties moeten worden geïnterpreteerd.
Deze parameter is geïntroduceerd in Windows PowerShell 3.0.
Type: | String[] |
Aliassen: | PSPath |
Position: | Named |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
-PassThru
Hiermee wordt een object geretourneerd dat de beveiligingsdescriptor vertegenwoordigt die is gewijzigd. Deze cmdlet genereert standaard geen uitvoer.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | 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 AclObject of SecurityDescriptor parameters of door een beveiligingsobject door te geven van Get-Acl
naar Set-Acl
), laat u de parameter Path (naam en waarde) weg, Set-Acl
gebruikt het pad dat is opgenomen in het beveiligingsobject.
Type: | String[] |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | True |
-WhatIf
Toont wat er zou gebeuren als de cmdlet wordt uitgevoerd. De cmdlet wordt niet uitgevoerd.
Type: | SwitchParameter |
Aliassen: | wi |
Position: | Named |
Default value: | False |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
Invoerwaarden
U kunt een ACL-object doorsluisen naar deze cmdlet.
U kunt een beveiligingsdescriptor doorsluisen naar deze cmdlet.
Uitvoerwaarden
None
Deze cmdlet retourneert standaard geen uitvoer.
Wanneer u de parameter PassThru gebruikt, retourneert deze cmdlet een beveiligingsobject. 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 de PowerShell-bestandssysteem- en registerproviders. Als zodanig kunt u deze gebruiken om de beveiligingsdescriptors van bestanden, mappen en registersleutels te wijzigen.