Set-Acl

Modul: Microsoft.PowerShell.Security

Ændrer sikkerhedsdeskriptoren for et angivet element, f.eks. en fil eller en registreringsdatabasenøgle.

Syntaks

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

Beskrivelse

Cmdletten Set-Acl ændrer sikkerhedsdeskriptoren for et angivet element, f.eks. en fil eller en registernøgle, så den passer til værdierne i en sikkerhedsdeskriptor, som du angiver.

For at bruge Set-Acl skal du bruge parameteren Sti eller InputObject til at identificere det element, hvis sikkerhedsdeskriptor du vil ændre. Brug derefter parametrene AclObject eller SecurityDescriptor til at levere en sikkerhedsdeskriptor, der har de værdier, du ønsker at anvende. Set-Acl anvender den sikkerhedsdeskriptor, der er leveret. Den bruger værdien af AclObject-parameteren som model og ændrer værdierne i elementets sikkerhedsdeskriptor, så de stemmer overens med værdierne i AclObject-parameteren.

Eksempler

Eksempel 1: Kopiering af en sikkerhedsdeskriptor fra en fil til en anden

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

Disse kommandoer kopierer værdierne fra sikkerhedsdeskriptoren i filen Dog.txt til sikkerhedsdeskriptoren i filen Cat.txt. Når kommandoerne er færdige, er sikkerhedsdeskriptorerne for filerne Dog.txt og Cat.txt identiske.

Den første kommando bruger cmdlet Get-Acl til at hente sikkerhedsdeskriptoren for filen Dog.txt.Tildelingsoperatoren (=) gemmer sikkerhedsdeskriptoren i værdien af variablen $DogACL.

Den anden kommando bruger Set-Acl til at ændre værdierne i ACL’en for Cat.txt til værdierne i$DogACL.

Værdien af Path-parameteren er stien til Cat.txt-filen. Værdien af AclObjectparameteren er modellens ACL, i dette tilfælde ACL’en for Dog.txt som gemt i $DogACL-variablen.

Eksempel 2: Brug pipeline-operatoren til at sende en deskriptor

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

Denne kommando er næsten den samme som kommandoen i det foregående eksempel, bortset fra at den bruger apipeline-operatoren (|) til at sende sikkerhedsdeskriptoren fra en Get-Acl-kommando til en Set-Acl-kommando.

Den første kommando bruger cmdlet Get-Acl til at hente sikkerhedsdeskriptoren for filen Dog.txt. Operatorenpipeline (|) overfører et objekt, der repræsenterer sikkerhedsdeskriptoren for Dog.txt, til cmdlettenSet-Acl.

Den anden kommando bruger Set-Acl til at anvende sikkerhedsdeskriptoren for Dog.txt på Cat.txt.Når kommandoen afsluttes, er ACL’erne for filerne Dog.txt og Cat.txt identiske.

Eksempel 3: Anvend en sikkerhedsdeskriptor på flere filer

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

Disse kommandoer anvender sikkerhedsdeskriptorerne i filerne File0.txt-filen på alle tekstfiler i C:\Tempmappen og alle dens undermapper.

Den første kommando henter sikkerhedsdeskriptoren for filen File0.txt i den aktuelle mappe og anvender tildelingsoperatoren (=) til at gemme den i variablen $NewACL.

Den første kommando i pipelinen bruger cmdletten Get-ChildItem til at hente alle tekstfilerne i mappenC:\Temp. Med parameteren Recurse udvides kommandoen til at omfatte alle undermapper iC:\temp. Parameteren Include begrænser de hentede filer til dem med filnavneudvidelsen .txt. Parameteren Force henter skjulte filer, som ellers ville blive udelukket. (Du kan ikke bruge c:\temp\*.txt, fordi Recurse-parameteren virker på mapper, ikke på filer.)

Pipelineoperatoren (|) sender de objekter, der repræsenterer de hentede filer, til Set-Aclcmdletten, som anvender sikkerhedsdeskriptoren i AclObject-parameteren på alle filerne i pipelinen.

I praksis er det bedst at bruge WhatIf-parameteren med alle Set-Acl-kommandoer, der kan påvirke mere end ét element. I dette tilfælde ville den anden kommando i pipelinen væreSet-Acl -AclObject $NewAcl -WhatIf. Denne kommando indeholder en liste over de filer, der ville blive påvirket afkommandoen. Når du har gennemgået resultatet, kan du køre kommandoen igen uden WhatIf-parameteren.

Eksempel 4: Deaktivere arv og bevare nedarvede adgangsregler

$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

Disse kommandoer deaktiverer adgangsarv fra overordnede mapper, mens de eksisterende nedarvede adgangsregler stadig bevares.

Den første kommando bruger cmdlet Get-Acl til at hente sikkerhedsbeskrivelsen for filen Dog.txt.

Dernæst oprettes der variabler til at konvertere de nedarvede adgangsregler til eksplicitte adgangsregler. For at beskytte de adgangsregler, der er knyttet til dette, mod arv, skal du indstille $isProtected-variablen til $true.For at tillade arv skal du indstille $isProtected til $false. Du kan finde flere oplysninger under Beskyttelse af adgangsregler.Variablen $preserveInheritance sættes til $true for at bevare arvede adgangsregler; false for at fjerne arvede adgangsregler. Derefter opdateres adgangsregelbeskyttelsen ved hjælp af metodenSetAccessRuleProtection().

Den sidste kommando bruger Set-Acl til at anvende sikkerhedsdeskriptoren for til Dog.txt. Når kommandoen afsluttes, vil ACL’erne for Dog.txt, der blev arvet fra mappen Pets, blive anvendt direkte på Dog.txt, og nye adgangspolitikker, der tilføjes til Pets, vil ikke ændre adgangen til Dog.txt.

Eksempel 5: Giv administratorer fuld kontrol over filen

$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

Denne kommando vil give gruppen BUILTIN\Administrators fuld kontrol over Dog.txt-filen.

Den første kommando bruger cmdlet Get-Acl til at hente sikkerhedsbeskrivelsen for filen Dog.txt.

Der oprettes næste variabler for at give gruppen BUILTIN\Administrators fuld kontrol over filen Dog.txt. Variablen $identity sættes til navnet på auser-konto. Variablen $fileSystemRights er indstillet til FullControl og kan være en hvilken som helst af værdierneFileSystemRights , der angiver den operationstype, der er knyttet til adgangsreglen. Variablen $type er sat til “Allow” for at angive, om operationen skal tillades eller nægtes. Variablen $fileSystemAccessRuleArgumentList er en argumentliste, der skal overføres, når det nye FileSystemAccessRule-objekt oprettes. Derefter oprettes et nytFileSystemAccessRule-objekt, og FileSystemAccessRule-objektet overføres til metodenSetAccessRule(), der tilføjer den nye adgangsregel.

Den sidste kommando bruger Set-Acl til at anvende sikkerhedsbeskrivelsen af til Dog.txt. Når kommandoen er fuldført, vil gruppen BUILTIN\Administrators have fuld kontrol over Dog.txt.

Parameters

-AclObject

Angiver en ACL med de ønskede egenskabsværdier. Set-Acl Ændrer ACL’en for det emne, der er angivet ved parameteren Path eller InputObject, så den passer til værdierne i det angivne sikkerhedsobjekt.

Du kan gemme output af en Get-Acl-kommando i en variabel og derefter bruge AclObjectparameteren til at videregive variablen, eller skrive en Get-Acl-kommando.

Type: Objekt
Position: 1
Standardværdi: Ingen
Accepter input fra pipeline: True
Accept wildcard-tegn: False
-ClearCentralAccessPolicy

Fraser den centrale adgangspolitik fra det angivne element.

Med start i Windows Server 2012 kan administratorer bruge Active Directory og gruppepolitik til at angivecentrale adgangspolitikker for brugere og grupper. Du kan finde flere oplysninger underDynamisk adgangskontrol: Scenarieoversigt: Oversigt over scenarier.

Denne parameter blev indført i Windows PowerShell 3.0.

Type: SwitchParameter
Position: Named
Standardværdi: False
Accepterer input fra pipeline: Falsk
Accepter jokertegn: Falsk
-Bekræft

Frager dig om bekræftelse, før du kører cmdletten.

Type: SwitchParameter
Aliases: cf
Position: Named
Formålsværdi: Named
Standardværdi: False
Accept pipeline input: False
Accept wildcard-tegn: Falsk
-Udelukke

Ommiterer de angivne elementer. Værdien af denne parameter kvalificerer parameteren Path. Indtast et stielement eller et mønster, f.eks. *.txt. Jokertegn er tilladt.

Type: String
Position: Named
Standardværdi: None
Acceptér pipeline-input: False
Accepter jokertegn: True
-Filter

Angiver et filter i udbyderens format eller sprog. Værdien af denne parameter kvalificerer parameterenPath. Syntaksen for filteret, herunder brugen af jokertegn, afhænger af provideren. Filtre er mere effektive end andre parametre, fordi provideren anvender dem, når den henter objekterne, i stedet for at PowerShell skal filtrere objekterne, efter at de er hentet.

Type: String
Position: Named
Standardværdi: None
Accept pipeline input: Falsk
Accepter jokertegn: True
-Inkluderer

Ændrer kun de angivne elementer. Værdien af denne parameter kvalificerer parameteren Path.Indtast et stielement eller et mønster, f.eks. *.txt. Jokertegn er tilladt.

Type: String
Position: Named
Standardværdi: None
Acceptér pipelineindtastning: Falsk
Accepter jokertegn: True
-InputObject

Ændrer sikkerhedsbeskrivelsen for det angivne objekt. Indtast en variabel, der indeholder objektet, en kommando, der henter objektet.

Du kan ikke indsætte det objekt, der skal ændres i rørledningen, i Set-Acl. Du skal i stedet bruge InputObject-parameteren eksplicit i kommandoen.

Denne parameter blev indført i Windows PowerShell 3.0.

Type: PSObject
Position: 0
Standardværdi: None
Accept pipeline input: True
Accept wildcard-tegn: False
-LiteralPath

Ændrer sikkerhedsdeskriptoren for det angivne element. I modsætning til Path bruges værdien af parameterenLiteralPath nøjagtigt som den er skrevet. Ingen tegn fortolkes somwildcards. Hvis stien indeholder escape-tegn, skal du omslutte den med enkelt citationstegn (').Enkelt citationstegn fortæller PowerShell, at den ikke skal fortolke tegn som escape-sekvenser.

Denne parameter blev indført i Windows PowerShell 3.0.

Type: String
Aliases: PSPath
Position: Named
Standardværdi: None
Accept pipeline input: True
Accept wildcard-tegn: False
-Passthru

Returnerer et objekt, der repræsenterer den sikkerhedsdeskriptor, der blev ændret. Som standard genererer denne cmdlet ikke noget output.

Type: SwitchParameter
Position: Named
Standardværdi: None
Accept pipeline input: Falsk
Accepter jokertegn: Falsk
-Path

Ændrer sikkerhedsbeskrivelsen for det angivne element. Indtast stien til et element, f.eks. en sti til en fil eller en registreringsdatabasenøgle. Jokertegn er tilladt.

Hvis du videregiver et sikkerhedsobjekt til Set-Acl (enten ved hjælp af parametrene AclObject ellerSecurityDescriptor eller ved at videregive et sikkerhedsobjekt fra Get-Acl til Set-Acl), og du udelader parameteren Path (navn og værdi), bruger Set-Acl den sti, der er inkluderet i dette sikkerhedsobjekt.

Type: String
Position: 0
Standardværdi: None
Accept pipeline input: True
Accept wildcard-tegn: True
-WhatIf

Viser, hvad der ville ske, hvis cmdletten køres. Cmdletten bliver ikke kørt.

Type: SwitchParameter
Aliases: wi
Position: Named
Defaultværdi: False
Accept pipeline input: False
Accept wildcard tegn: False

Input

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

Du kan pipeføre et ACL-objekt eller en sikkerhedsdeskriptor til Set-Acl.

Outputs

FileSecurity

Som standard genererer Set-Acl ikke noget output. Men hvis du bruger parameteren Passthru,genererer den et sikkerhedsobjekt. Typen af sikkerhedsobjektet afhænger af elementets type.

Notes

Denne cmdlet er kun tilgængelig på Windows-platforme.

Cmdletten Set-Acl understøttes af PowerShell-filsystemet og registreringsdatabaseudbyderne. Som sådan kan du bruge den til at ændre sikkerhedsbeskrivelserne for filer, mapper og registreringsdatabasenøgler.

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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.