Dela via


Set-Acl

Ändrar säkerhetsbeskrivningen för ett angivet objekt, till exempel en fil eller en registernyckel.

Syntax

Set-Acl
   [-Path] <String[]>
   [-AclObject] <Object>
   [[-CentralAccessPolicy] <String>]
   [-ClearCentralAccessPolicy]
   [-Passthru]
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-WhatIf]
   [-Confirm]
   [-UseTransaction]
   [<CommonParameters>]
Set-Acl
   [-InputObject] <PSObject>
   [-AclObject] <Object>
   [-Passthru]
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-WhatIf]
   [-Confirm]
   [-UseTransaction]
   [<CommonParameters>]
Set-Acl
   -LiteralPath <String[]>
   [-AclObject] <Object>
   [[-CentralAccessPolicy] <String>]
   [-ClearCentralAccessPolicy]
   [-Passthru]
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-WhatIf]
   [-Confirm]
   [-UseTransaction]
   [<CommonParameters>]

Description

Cmdleten Set-Acl ändrar säkerhetsbeskrivningen för ett angivet objekt, till exempel en fil eller en registernyckel, så att den matchar värdena i en säkerhetsbeskrivning som du anger.

Om du vill använda Set-Aclanvänder du parametern Path eller InputObject för att identifiera det objekt vars säkerhetsbeskrivning du vill ändra. Använd sedan parametrarna AclObject eller SecurityDescriptor för att ange en säkerhetsbeskrivning som har de värden som du vill använda. Set-Acl tillämpar säkerhetsbeskrivningen som tillhandahålls. Den använder värdet för parametern AclObject som en modell och ändrar värdena i objektets säkerhetsbeskrivning för att matcha värdena i parametern AclObject .

Exempel

Exempel 1: Kopiera en säkerhetsbeskrivning från en fil till en annan

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

Dessa kommandon kopierar värdena från säkerhetsbeskrivningen för Dog.txt-filen till säkerhetsbeskrivningen för Cat.txt-filen. När kommandona har slutförts är säkerhetsbeskrivningarna för Dog.txt- och Cat.txt-filerna identiska.

Det första kommandot använder cmdleten Get-Acl för att hämta säkerhetsbeskrivningen för den Dog.txt filen. Tilldelningsoperatorn (=) lagrar säkerhetsbeskrivningen i värdet för variabeln $DogACL.

Det andra kommandot använder Set-Acl för att ändra värdena i ACL för Cat.txt till värdena i $DogACL.

Värdet för parametern Path är sökvägen till filen Cat.txt. Värdet för parametern AclObject är modell-ACL, i det här fallet ACL för Dog.txt som sparats i variabeln $DogACL.

Exempel 2: Använd pipelineoperatorn för att skicka en beskrivning

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

Det här kommandot är nästan detsamma som kommandot i föregående exempel, förutom att det använder en pipelineoperator för att skicka säkerhetsbeskrivningen från en Get-Aclcommand till ett Set-Acl kommando.

Det första kommandot använder cmdleten Get-Acl för att hämta säkerhetsbeskrivningen för den Dog.txt filen. Pipelineoperatorn (|) skickar ett objekt som representerar Dog.txt säkerhetsbeskrivning till cmdleten Set-Acl .

Det andra kommandot använder Set-Acl för att tillämpa säkerhetsbeskrivningen för Dog.txt på Cat.txt. När kommandot har slutförts är ACL:erna för Dog.txt- och Cat.txt-filerna identiska.

Exempel 3: Tillämpa en säkerhetsbeskrivning på flera filer

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

Dessa kommandon tillämpar säkerhetsbeskrivningarna i den File0.txt filen på alla textfiler i katalogen C:\Temp och alla dess underkataloger.

Det första kommandot hämtar säkerhetsbeskrivningen för File0.txt-filen i den aktuella katalogen och använder tilldelningsoperatorn (=) för att lagra den i variabeln $NewACL.

Det första kommandot i pipelinen använder cmdleten Get-ChildItem för att hämta alla textfiler i katalogen C:\Temp. Parametern Recurse utökar kommandot till alla underkataloger i C:\temp. Parametern Include begränsar de filer som hämtas till dem med filnamnstillägget ".txt". Parametern Force hämtar dolda filer, som annars skulle undantas. (Du kan inte använda "c:\temp*.txt", eftersom parametern Recurse fungerar på kataloger, inte på filer.)

Pipelineoperatorn (|) skickar objekten som representerar de hämtade filerna till cmdleten Set-Acl , som tillämpar säkerhetsbeskrivningen i parametern AclObject på alla filer i pipelinen.

I praktiken är det bäst att använda parametern WhatIf med alla Set-Acl kommandon som kan påverka mer än ett objekt. I det här fallet skulle det andra kommandot i pipelinen vara "Set-Acl -AclObject $NewAcl -WhatIf". Det här kommandot visar de filer som skulle påverkas av kommandot. När du har granskat resultatet kan du köra kommandot igen utan parametern WhatIf .

Parametrar

-AclObject

Anger en ACL med önskade egenskapsvärden. Set-Acl ändrar ACL för objektet som anges av parametern Path eller InputObject så att det matchar värdena i det angivna säkerhetsobjektet.

Du kan spara utdata från ett Get-Acl kommando i en variabel och sedan använda parametern AclObject för att skicka variabeln eller skriva ett Get-Acl kommando.

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

-CentralAccessPolicy

Upprättar eller ändrar objektets centrala åtkomstprincip. Ange CAP-ID eller eget namn på en princip för central åtkomst på datorn.

Från och med Windows Server 2012 kan administratörer använda Active Directory och grupprincip för att ange centrala åtkomstprinciper för användare och grupper. Mer information finns i Dynamisk Access Control: Scenarioöversikt.

Den här parametern introducerades i Windows PowerShell 3.0.

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

-ClearCentralAccessPolicy

Tar bort den centrala åtkomstprincipen från det angivna objektet.

Från och med Windows Server 2012 kan administratörer använda Active Directory och grupprincip för att ange centrala åtkomstprinciper för användare och grupper. Mer information finns i Dynamisk Access Control: Scenarioöversikt.

Den här parametern introducerades i Windows PowerShell 3.0.

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

-Confirm

Uppmanar dig att bekräfta innan du kör cmdleten.

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

-Exclude

Utelämnar de angivna objekten. Värdet för den här parametern kvalificerar parametern Path . Ange ett sökvägselement eller mönster, till exempel "*.txt". Jokertecken tillåts.

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

-Filter

Anger ett filter i providerns format eller språk. Värdet för den här parametern kvalificerar parametern Path . Syntaxen för filtret, inklusive användningen av jokertecken, beror på providern. Filter är effektivare än andra parametrar eftersom providern tillämpar dem när objekten hämtas, i stället för att PowerShell filtrerar objekten när de har hämtats.

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

-Include

Ändrar endast de angivna objekten. Värdet för den här parametern kvalificerar parametern Path . Ange ett sökvägselement eller mönster, till exempel "*.txt". Jokertecken tillåts.

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

-InputObject

Ändrar säkerhetsbeskrivningen för det angivna objektet. Ange en variabel som innehåller objektet eller ett kommando som hämtar objektet.

Du kan inte skicka objektet som ska ändras till Set-Acl. Använd i stället parametern InputObject explicit i kommandot .

Den här parametern introducerades i Windows PowerShell 3.0.

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

-LiteralPath

Ändrar säkerhetsbeskrivningen för det angivna objektet. Till skillnad från Path används värdet för parametern LiteralPath exakt som det skrivs. Inga tecken tolkas som jokertecken. Om sökvägen innehåller escape-tecken omger du den med enkla citattecken. Enkla citattecken talar om för PowerShell att inga tecken ska tolkas som escape-sekvenser.

Den här parametern introducerades i Windows PowerShell 3.0.

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

-Passthru

Returnerar ett objekt som representerar säkerhetsbeskrivningen som har ändrats. Som standard genererar denna cmdlet inga utdata.

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

-Path

Ändrar säkerhetsbeskrivningen för det angivna objektet. Ange sökvägen till ett objekt, till exempel en sökväg till en fil eller registernyckel. Jokertecken tillåts.

Om du skickar ett säkerhetsobjekt till (antingen genom att Set-Acl använda parametrarna AclObject eller SecurityDescriptor eller genom att skicka ett säkerhetsobjekt från Get-Acl till Set-Acl), och du utelämnar parametern Path (namn och värde), Set-Acl används sökvägen som ingår i säkerhetsobjektet.

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

-UseTransaction

Inkluderar kommandot i den aktiva transaktionen. Den här parametern är bara giltig medan en transaktion pågår. Mer information finns i about_Transactions.

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

-WhatIf

Visar vad som skulle hända om cmdleten kördes. Cmdleten körs inte.

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

Indata

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

Du kan skicka ett ACL-objekt eller en säkerhetsbeskrivning till Set-Acl.

Utdata

FileSecurity

Som standard Set-Acl genererar inte några utdata. Men om du använder parametern Passthru genereras ett säkerhetsobjekt. Typen av säkerhetsobjekt beror på typen av objekt.

Kommentarer

Cmdleten Set-Acl stöds av PowerShell-filsystemet och registerprovidrar. Därför kan du använda den för att ändra säkerhetsbeskrivningar för filer, kataloger och registernycklar.