Set-Acl
Ändrar säkerhetsbeskrivningen för ett angivet objekt, till exempel en fil eller en registernyckel.
Syntax
ByPath (Standard)
Set-Acl
[-Path] <String[]>
[-AclObject] <Object>
[-ClearCentralAccessPolicy]
[-PassThru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
ByInputObject
Set-Acl
[-InputObject] <PSObject>
[-AclObject] <Object>
[-PassThru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
ByLiteralPath
Set-Acl
[-AclObject] <Object>
-LiteralPath <String[]>
[-ClearCentralAccessPolicy]
[-PassThru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Den här cmdleten är endast tillgänglig på Windows-plattformen.
Cmdleten Set-Acl ändrar säkerhetsbeskrivningen för ett angivet objekt, till exempel en fil eller en registernyckel, för att matcha 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 anges. Den använder värdet för parametern AclObject som 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 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 ett Get-Acl kommando till ett Set-Acl kommando.
Det första kommandot använder cmdleten Get-Acl för att hämta säkerhetsbeskrivningen för 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 File0.txt-filen på alla textfiler i C:\Temp-katalogen 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 för 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\*.txteftersom 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.
Exempel 4: Inaktivera arv och bevara ärvda åtkomstregler
$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
Dessa kommandon inaktiverar åtkomstarv från överordnade mappar, samtidigt som befintliga ärvda åtkomstregler bevaras.
Det första kommandot använder cmdleten Get-Acl för att hämta säkerhetsbeskrivningen för Dog.txt-filen.
Därefter skapas variabler för att konvertera ärvda åtkomstregler till explicita åtkomstregler. Om du vill skydda åtkomstreglerna som är associerade med detta från arv anger du variabeln $isProtected till $true. Om du vill tillåta arv anger du $isProtected till $false. Mer information finns i ange åtkomstregelskydd.
Ange variabeln $preserveInheritance till $true för att bevara ärvda åtkomstregler eller $false för att ta bort ärvda åtkomstregler. Sedan uppdateras åtkomstregelskyddet med hjälp av metoden SetAccessRuleProtection().
Det sista kommandot använder Set-Acl för att tillämpa säkerhetsbeskrivningen för på Dog.txt. När kommandot har slutförts tillämpas ACL:erna för Dog.txt som ärvdes från mappen Husdjur direkt på Dog.txtoch nya åtkomstprinciper som läggs till i Husdjur ändrar inte åtkomsten till Dog.txt.
Exempel 5: Ge administratörer fullständig kontroll över 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
$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
Det här kommandot ger BUILTIN\Administrators gruppen Fullständig kontroll över Dog.txt-filen.
Det första kommandot använder cmdleten Get-Acl för att hämta säkerhetsbeskrivningen för Dog.txt-filen.
Nästa variabler skapas för att ge BUILTIN\Administrators grupp fullständig kontroll över filen Dog.txt. Variabeln $identity anges till namnet på ett användarkonto. Variabeln $fileSystemRights inställd på FullControl och kan vara något av FileSystemRights värden som anger vilken typ av åtgärd som är associerad med åtkomstregeln. Variabeln $type anges till "Tillåt" för att ange om åtgärden ska tillåtas eller nekas. Variabeln $fileSystemAccessRuleArgumentList är en argumentlista som ska skickas med när det nya objektet FileSystemAccessRule skapas. Sedan skapas ett nytt FileSystemAccessRule- objekt, och FileSystemAccessRule--objektet skickas till metoden SetAccessRule() lägger till den nya åtkomstregeln.
Det sista kommandot använder Set-Acl för att tillämpa säkerhetsbeskrivningen för på Dog.txt. När kommandot har slutförts har gruppen BUILTIN\Administrators fullständig kontroll över Dog.txt.
Parametrar
-AclObject
Anger en ACL med önskade egenskapsvärden.
Set-Acl ändrar ACL för objektet som anges av Path eller InputObject parametern för att matcha 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.
Parameteregenskaper
| Typ: | Object |
| Standardvärde: | None |
| Stöder jokertecken: | False |
| DontShow: | False |
Parameteruppsättningar
(All)
| Position: | 1 |
| Obligatorisk: | True |
| Värde från pipeline: | True |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | 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 åtkomstkontroll: Scenarioöversikt.
Den här parametern introducerades i Windows PowerShell 3.0.
Parameteregenskaper
| Typ: | SwitchParameter |
| Standardvärde: | False |
| Stöder jokertecken: | False |
| DontShow: | False |
| Alias: | PSPath, SP |
Parameteruppsättningar
ByPath
| Position: | Named |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
ByLiteralPath
| Position: | Named |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
-Confirm
Uppmanar dig att bekräfta innan du kör cmdleten.
Parameteregenskaper
| Typ: | SwitchParameter |
| Standardvärde: | False |
| Stöder jokertecken: | False |
| DontShow: | False |
| Alias: | jfr |
Parameteruppsättningar
(All)
| Position: | Named |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | 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.
Parameteregenskaper
| Typ: | String[] |
| Standardvärde: | None |
| Stöder jokertecken: | True |
| DontShow: | False |
Parameteruppsättningar
(All)
| Position: | Named |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
-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.
Parameteregenskaper
| Typ: | String |
| Standardvärde: | None |
| Stöder jokertecken: | True |
| DontShow: | False |
Parameteruppsättningar
(All)
| Position: | Named |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
-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.
Parameteregenskaper
| Typ: | String[] |
| Standardvärde: | None |
| Stöder jokertecken: | True |
| DontShow: | False |
Parameteruppsättningar
(All)
| Position: | Named |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
-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 det objekt 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.
Parameteregenskaper
| Typ: | PSObject |
| Standardvärde: | None |
| Stöder jokertecken: | False |
| DontShow: | False |
Parameteruppsättningar
ByInputObject
| Position: | 0 |
| Obligatorisk: | True |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | True |
| Värde från återstående argument: | False |
-LiteralPath
Ändrar säkerhetsbeskrivningen för det angivna objektet. Till skillnad från Pathanvänds värdet för parametern LiteralPath precis som det skrivs. Inga tecken tolkas som wildcards. Om sökvägen innehåller escape-tecken omger du den med enkla citattecken (').
Enkla citattecken gör att PowerShell inte tolkar några tecken som escape-sekvenser.
Den här parametern introducerades i Windows PowerShell 3.0.
Parameteregenskaper
| Typ: | String[] |
| Standardvärde: | None |
| Stöder jokertecken: | False |
| DontShow: | False |
| Alias: | PSPath |
Parameteruppsättningar
ByLiteralPath
| Position: | Named |
| Obligatorisk: | True |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | True |
| Värde från återstående argument: | False |
-PassThru
Returnerar ett objekt som representerar säkerhetsbeskrivningen som ändrades. Som standard genererar den här cmdleten inga utdata.
Parameteregenskaper
| Typ: | SwitchParameter |
| Standardvärde: | None |
| Stöder jokertecken: | False |
| DontShow: | False |
Parameteruppsättningar
(All)
| Position: | Named |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | 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 Set-Acl (antingen med hjälp av AclObject- eller SecurityDescriptor parametrar eller genom att skicka ett säkerhetsobjekt från Get-Acl till Set-Acl), och du utelämnar parametern Path (namn och värde), använder Set-Acl sökvägen som ingår i säkerhetsobjektet.
Parameteregenskaper
| Typ: | String[] |
| Standardvärde: | None |
| Stöder jokertecken: | True |
| DontShow: | False |
Parameteruppsättningar
ByPath
| Position: | 0 |
| Obligatorisk: | True |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | True |
| Värde från återstående argument: | False |
-WhatIf
Visar vad som skulle hända om kommandot körs. Cmdleten körs inte.
Parameteregenskaper
| Typ: | SwitchParameter |
| Standardvärde: | False |
| Stöder jokertecken: | False |
| DontShow: | False |
| Alias: | Wi |
Parameteruppsättningar
(All)
| Position: | Named |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
CommonParameters
Den här cmdleten stöder vanliga parametrar: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction och -WarningVariable. Mer information finns i about_CommonParameters.
Indata
ObjectSecurity
Du kan skicka ett ACL-objekt till den här cmdleten.
CommonSecurityDescriptor
Du kan skicka en säkerhetsbeskrivning till den här cmdleten.
Utdata
None
Som standard returnerar den här cmdleten inga utdata.
FileSecurity
När du använder parametern PassThru returnerar den här cmdleten ett säkerhetsobjekt. Typen av säkerhetsobjekt beror på typen av objekt.
Kommentarer
Den här cmdleten är endast tillgänglig på Windows-plattformar.
Cmdleten Set-Acl stöds av PowerShell FileSystem- och Registerprovidrar. Därför kan du använda den för att ändra säkerhetsbeskrivningarna för filer, kataloger och registernycklar.