Æ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:\Temp
mappen 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-Acl
cmdletten, 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
$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
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 |
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 |
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 |
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 |
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 |
Æ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 |
Æ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 |
Æ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 |
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 |
Æ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 |
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