Set-Acl

Module: Microsoft.PowerShell.Security

Verandert de beveiligingsdescriptor van een gespecificeerd item, zoals een bestand of een registersleutel.

Syntax

Set-Acl <String> <Object> >] >] 
Set-Acl <PSObject> <Object> >] >] 
Set-Acl -LiteralPath <String> <Object> >] >] 

Description

Het cmdlet Set-Acl 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.

Om Set-Acl te 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 te verstrekken die de waarden heeft die u wilt toepassen. Set-Acl past de beveiligingsdescriptor toe die is aangeleverd. Het gebruikt de waarde van de AclObject parameter als model en wijzigt de waarden in de beveiligingsdescriptor van het item om overeen te komen met de waarden in de AclObject parameter.

Voorbeelden

Voorbeeld 1: Kopieer een beveiligingsdescriptor van het ene bestand naar het andere

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

Deze commando’s kopiëren de waarden van de beveiligingsdescriptor van het bestand Dog.txt naar de beveiligingsdescriptor van het bestand Cat.txt. Wanneer de opdrachten zijn voltooid, zijn de beveiligingsdescriptors van de bestanden Dog.txt en Cat.txt identiek.

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

Het tweede commando 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 AclObjectparameter is de model ACL, in dit geval, de ACL van Dog.txt zoals opgeslagen in de $DogACL variabele.

Voorbeeld 2: Gebruik de pijplijn-operator om een descriptor door te geven

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

Dit commando is bijna hetzelfde als het commando in het vorige voorbeeld, behalve dat het apipeline operator (|) gebruikt om de beveiligingsdescriptor van een Get-Acl commando naar een Set-Acl commando te sturen.

Het eerste commando gebruikt het Get-Acl cmdlet om de beveiligingsdescriptor van het bestand Dog.txt op te halen. Depipeline operator (|) geeft een object door dat de beveiligingsdescriptor van Dog.txt voorstelt aan het cmdletSet-Acl.

Het tweede commando 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 bestanden Dog.txt en Cat.txt identiek.

Voorbeeld 3: een beveiligingsdescriptor toepassen op meerdere bestanden

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

Deze opdrachten passen de beveiligingsdescriptors in het bestand File0.txt bestand toe op alle tekstbestanden in de C:\Temp directory en al zijn subdirectories.

Het eerste commando krijgt de beveiligingsdescriptor van het File0.txt bestand in de huidige directory en gebruikt de toewijzingsoperator (=) om het op te slaan in de $NewACL variabele.

Het eerste commando in de pijplijn gebruikt het cmdlet Get-ChildItem om alle tekstbestanden in deC:\Temp directory op te halen. De parameter Recurse breidt het commando uit tot alle submappen vanC:\temp. De Include parameter beperkt de opgehaalde bestanden tot die met de .txt bestandsnaamextensie. De Force parameter haalt verborgen bestanden binnen, die anders zouden worden uitgesloten. (U kunt c:\temp\*.txt niet gebruiken, omdat de Recurse parameter werkt op mappen, niet op bestanden.)

De pijplijn operator (|) stuurt de objecten die de opgehaalde bestanden vertegenwoordigen naar het Set-Aclcmdlet, dat de beveiligingsdescriptor in de AclObject parameter toepast op alle bestanden in de pijplijn.

In de praktijk is het het beste om de WhatIf parameter te gebruiken met alle Set-Acl commando’s die meer dan één item kunnen beïnvloeden. In dit geval zou de tweede opdracht in de pijplijnSet-Acl -AclObject $NewAcl -WhatIf zijn. Deze opdracht geeft een lijst van de bestanden die door de opdracht zouden worden beïnvloed. Nadat u het resultaat hebt bekeken, kunt u de opdracht opnieuw uitvoeren zonder de WhatIf-parameter.

Voorbeeld 4: Overerving uitschakelen en geërfde 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

Deze opdrachten schakelen de overerving van toegang van bovenliggende mappen uit, terwijl de bestaande geërfde toegangsregels behouden blijven.

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

Volgende variabelen worden gemaakt om de geërfde toegangsregels om te zetten in expliciete toegangsregels. Om de hieraan gekoppelde toegangsregels te beschermen tegen overerving, stelt u de variabele $isProtected in op$true.Om overerving toe te staan, stelt u $isProtected in op $false. Voor meer informatie, zie toegangsregel bescherming instellen.De $preserveInheritance variabele ingesteld op $true om geërfde toegangsregels te behouden; false verwijdert geërfde toegangsregels. Daarna wordt de toegangsregel beveiliging bijgewerkt met deSetAccessRuleProtection() methode.

Het laatste commando gebruikt Set-Acl om de beveiligingsdescriptor van toe te passen op Dog.txt. Wanneer het commando voltooid is, zullen de ACL’s van Dog.txt die geërfd zijn van de Pets map direct toegepast worden op Dog.txt, en nieuw toegangsbeleid toegevoegd aan Pets zal de toegang tot Dog.txt niet veranderen.

Voorbeeld 5: Geef Administrators volledige controle over het bestand

$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

Dit commando zal de groep BUILTINAdministrators volledige controle geven over het bestand Dog.txt bestand.

Het eerste commando gebruikt het Get-Acl cmdlet om de security descriptor van het Dog.txt bestand op te halen.

De volgende variabelen worden aangemaakt om de BUILTINAdministrators groep volledige controle te geven over het Dog.txt bestand. De $identity variabele ingesteld op de naam van auser account. De variabele$fileSystemRights ingesteld op FullControl, en kan een van de waarden zijn van deFileSystemRights die het type bewerking specificeert dat is gekoppeld aan de toegangsregel. De $type variabele ingesteld op “Toestaan” om aan te geven of de bewerking toegestaan of geweigerd moet worden. De variabele $fileSystemAccessRuleArgumentList is een argumentenlijst die moet worden doorgegeven bij het maken van het nieuwe FileSystemAccessRule object. Dan wordt een nieuwFileSystemAccessRule object gemaakt, en het FileSystemAccessRule object wordt doorgegeven aan deSetAccessRule() methode, voegt de nieuwe toegangsregel toe.

Het laatste commando gebruikt Set-Acl om de beveiligingsdescriptor van op Dog.txt toe te passen. Wanneer het commando is voltooid, heeft de groep BUILTINAdministrators volledige controle over Dog.txt.

Parameters

-AclObject

Specificeert een ACL met de gewenste property waarden. Set-Acl wijzigt de ACL van het item gespecificeerd door de Path of InputObject parameter om overeen te komen met de waarden in het gespecificeerde beveiligingsobject.

U kunt de uitvoer van een Get-Acl commando opslaan in een variabele en dan de AclObjectparameter gebruiken om de variabele door te geven, of een Get-Acl commando typen.

Type: Object
Positie: 1
Voorkeurwaarde: None
Accepteer invoer via pijplijn: True
Accept wildcard characters: False

-ClearCentralAccessPolicy

Verwijdert het centrale toegangsbeleid van het gespecificeerde item.

Beginnend in Windows Server 2012, kunnen beheerders Active Directory en Groepsbeleid gebruiken om een centraal toegangsbeleid voor gebruikers en groepen in te stellen. Zie voor meer informatieDynamische toegangscontrole: Scenario Overview.

Deze parameter is geïntroduceerd in Windows PowerShell 3.0.

Type: SwitchParameter
Positie: Naam
Standaardwaarde: False
Accepteer invoer via pijplijn: False
Accept wildcard characters: False
-Confirm

Vraagt u om bevestiging voordat u het cmdlet uitvoert.

Type: SwitchParameter
Aliassen: cf
Positie: Naam
Voorkeurwaarde: False
Accept pipeline input: False
Accept wildcard characters: False
-Exclude

Verwijdert de gespecificeerde items. De waarde van deze parameter kwalificeert de parameter Pad. Voer een path-element of -patroon in, zoals *.txt. Jokertekens zijn toegestaan.

Type: String
Position: Named
Default value: None
Accepteer invoer via pijplijn: False
Accept wildcard characters: True
-Filter

Specifieert een filter in het formaat of de taal van de provider. De waarde van deze parameter kwalificeert de parameterPath. De syntaxis van het filter, inclusief het gebruik van jokertekens, hangt af 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: Naam
Standaardwaarde: Neen
Accepteer pijplijninvoer: False
Accept wildcard characters: True
-Include

Verandert alleen de gespecificeerde items. De waarde van deze parameter kwalificeert de parameter Pad. Voer een padelement of -patroon in, zoals *.txt. Jokertekens zijn toegestaan.

Type: String
Positie: Naam
Voorkeurwaarde: None
Accepteer invoer via pijplijn: False
Accept wildcard characters: True
-InputObject

Verandert de beveiligingsdescriptor van het gespecificeerde object. Geef een variabele op die het object bevat of een commando dat het object krijgt.

U kunt het object dat moet worden gewijzigd niet naar Set-Acl pijpen. Gebruik in plaats daarvan de InputObject-parameterexpliciet in de opdracht.

Deze parameter is geïntroduceerd in Windows PowerShell 3.0.

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

Verandert de beveiligingsdescriptor van het gespecificeerde item. In tegenstelling tot Path wordt de waarde van de parameterLiteralPath precies gebruikt zoals deze is getypt. Er worden geen tekens geïnterpreteerd als jokertekens. Als het pad escape-tekens bevat, zet u het tussen enkele aanhalingstekens (').Enkele aanhalingstekens vertellen PowerShell om geen tekens te interpreteren als escape-sequenties.

Deze parameter is geïntroduceerd in Windows PowerShell 3.0.

Type: String
Aliassen: PSPath
Positie: Named
Default value: None
Accept pipeline input: True
Accept wildcard characters: False
-Passthru

Er wordt een object geretourneerd dat de beveiligingsdescriptor weergeeft die werd gewijzigd. Standaard genereert dit cmdlet geen uitvoer.

Type: SwitchParameter
Position: Named
Default value: None
Accepteer invoer via pijplijn: False
Accept wildcard characters: False
-Path

Verandert de beveiligingsdescriptor van het gespecificeerde item. Voer het pad naar een item in, zoals een pad naar een bestand of registersleutel. Wildcards zijn toegestaan.

Als u een beveiligingsobject doorgeeft aan Set-Acl (hetzij met behulp van de parameters AclObject of SecurityDescriptor of door een beveiligingsobject door te geven van Get-Acl aan Set-Acl), en u laat de parameter Path (naam en waarde) weg, dan gebruikt Set-Acl het pad dat is opgenomen in dit beveiligingsobject.

Type: String
Position: 0
Default value: None
Accept pipeline input: True
Accept wildcard characters: True
-WhatIf

Geeft aan wat er zou gebeuren als het cmdlet wordt uitgevoerd. Het cmdlet wordt niet uitgevoerd.

Type: SwitchParameter
Aliassen: wi
Positie: Naam
Voorkeurwaarde: False
Accept pipeline input: False
Accept wildcard characters: False

Inputs

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

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

Outputs

FileSecurity

Normaal genereert Set-Acl geen uitvoer. Echter, als u de Passthru parameter gebruikt, genereert het een beveiligingsobject. Het type van het beveiligingsobject is afhankelijk van het type item.

Notes

Dit cmdlet is alleen beschikbaar op Windows platforms.

Het Set-Acl cmdlet wordt ondersteund door het PowerShell bestandssysteem en de register providers. U kunt het dus gebruiken om de beveiligingsdescriptors van bestanden, directory’s en registersleutels te wijzigen.

  • Get-Acl
  • FileSystemAccessRule
  • ObjectSecurity.SetAccessRuleProtection
  • FileSystemRights

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.