Set-Acl

Změní popisovač zabezpečení zadané položky, například soubor nebo klíč registru.

Syntax

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

Description

Tato rutina je dostupná jenom na platformě Windows.

Rutina Set-Acl změní popisovač zabezpečení zadané položky, jako je soubor nebo klíč registru, aby odpovídal hodnotám v popisovači zabezpečení, který zadáte.

Pokud chcete použít Set-Aclparametr Path nebo InputObject , identifikujte položku, jejíž popisovač zabezpečení chcete změnit. Pak pomocí parametrů AclObject nebo SecurityDescriptor zadejte popisovač zabezpečení, který má hodnoty, které chcete použít. Set-Acl použije popisovač zabezpečení, který je zadán. Používá hodnotu parametru AclObject jako model a změní hodnoty v popisovači zabezpečení položky tak, aby odpovídaly hodnotám v parametru AclObject .

Příklady

Příklad 1: Zkopírování popisovače zabezpečení z jednoho souboru do druhého

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

Tyto příkazy zkopírují hodnoty z popisovače zabezpečení souboru Dog.txt do popisovače zabezpečení souboru Cat.txt. Po dokončení příkazů jsou popisovače zabezpečení Dog.txt a Cat.txt souborů identické.

První příkaz použije rutinu Get-Acl k získání popisovače zabezpečení souboru Dog.txt. Operátor přiřazení (=) ukládá popisovač zabezpečení do hodnoty proměnné $DogACL.

Druhý příkaz používá Set-Acl ke změně hodnot v seznamu ACL Cat.txt na hodnoty v $DogACL.

Hodnota parametru Path je cesta k souboru Cat.txt. Hodnota parametru AclObject je seznam ACL modelu, v tomto případě seznam ACL Dog.txt uložený v $DogACL proměnné.

Příklad 2: Předání popisovače pomocí operátoru kanálu

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

Tento příkaz je téměř stejný jako příkaz v předchozím příkladu s tím rozdílem, že používá operátor kanálu (|) k odeslání popisovače zabezpečení z Get-Acl příkazu do Set-Acl příkazu.

První příkaz použije rutinu Get-Acl k získání popisovače zabezpečení souboru Dog.txt. Operátor kanálu (|) předá objekt, který představuje popisovač zabezpečení Dog.txt rutině Set-Acl .

Druhý příkaz použije Set-Acl popisovač zabezpečení Dog.txt na Cat.txt. Po dokončení příkazu jsou seznamy ACL Dog.txt a Cat.txt souborů stejné.

Příklad 3: Použití popisovače zabezpečení u více souborů

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

Tyto příkazy používají popisovače zabezpečení v souboru File0.txt pro všechny textové soubory v C:\Temp adresáři a všechny jeho podadresáře.

První příkaz získá popisovač zabezpečení souboru File0.txt v aktuálním adresáři a pomocí operátoru přiřazení (=) ho $NewACL uloží do proměnné.

První příkaz v kanálu používá rutinu Get-ChildItem k získání všech textových souborů v C:\Temp adresáři. Parametr Recurse rozšiřuje příkaz na všechny podadresáře C:\temp. Parametr Include omezuje soubory načtené na soubory s příponou .txt názvu souboru. Parametr Force získá skryté soubory, které by jinak byly vyloučeny. (Nelze použít c:\temp\*.txt, protože parametr Recurse funguje na adresářích, ne v souborech.)

Operátor kanálu (|) odešle objekty představující načtené soubory rutině Set-Acl , která použije popisovač zabezpečení v parametru AclObject pro všechny soubory v kanálu.

V praxi je nejlepší použít parametr WhatIf se všemi Set-Acl příkazy, které mohou ovlivnit více než jednu položku. V takovém případě by druhý příkaz v kanálu byl Set-Acl -AclObject $NewAcl -WhatIf. Tento příkaz vypíše soubory, které by příkaz ovlivnil. Po kontrole výsledku můžete příkaz spustit znovu bez parametru WhatIf .

Příklad 4: Zakázání dědičnosti a zachování zděděných pravidel přístupu

$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

Tyto příkazy zakazují dědičnost přístupu z nadřazených složek a přitom zachovávají stávající zděděná pravidla přístupu.

První příkaz použije rutinu Get-Acl k získání popisovače zabezpečení souboru Dog.txt.

Dále se vytvoří proměnné, které převedou zděděná pravidla přístupu na explicitní pravidla přístupu. Chcete-li chránit přístupová pravidla přidružená k této dědičnosti, nastavte proměnnou $isProtected na $true. Chcete-li povolit dědičnost, nastavte $isProtected na $falsehodnotu . Další informace najdete v tématu nastavení ochrany pravidel přístupu.

Nastavte proměnnou $preserveInheritance tak, aby $true se zachovala zděděná přístupová pravidla nebo $false aby se odebrala zděděná přístupová pravidla. Potom se ochrana pravidel přístupu aktualizuje pomocí metody SetAccessRuleProtection().

Poslední příkaz použije Set-Acl popisovač zabezpečení pro Dog.txt. Po dokončení příkazu se seznamy ACL Dog.txt, které byly zděděny ze složky Domácí zvířata, použijí přímo na Dog.txt a nové zásady přístupu přidané do domácího mazlíčka nezmění přístup k Dog.txt.

Příklad 5: Udělení úplné kontroly nad souborem správcům

$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

Tento příkaz udělí skupině BUILTIN\Administrators úplnou kontrolu nad souborem Dog.txt.

První příkaz použije rutinu Get-Acl k získání popisovače zabezpečení souboru Dog.txt.

Vytvoří se další proměnné, které skupině BUILTIN\Administrators udělí úplnou kontrolu nad souborem Dog.txt. Proměnná $identity nastavená na název uživatelského účtu. Proměnná nastavená $fileSystemRights na FullControl a může být libovolná z hodnot FileSystemRights , která určuje typ operace přidružené k pravidlu přístupu. Proměnná nastavená $type na Povolit určuje, jestli se má operace povolit nebo odepřít. Proměnná $fileSystemAccessRuleArgumentList je seznam argumentů, který se má předat při vytváření nového objektu FileSystemAccessRule . Pak se vytvoří nový objekt FileSystemAccessRule a objekt FileSystemAccessRule se předá metodě SetAccessRule(), přidá nové pravidlo přístupu.

Poslední příkaz použije Set-Acl popisovač zabezpečení pro Dog.txt. Po dokončení příkazu bude mít skupina BUILTIN\Administrators úplnou kontrolu nad Dog.txt.

Parametry

-AclObject

Určuje seznam ACL s hodnotami požadovaných vlastností. Set-Acl změní seznam ACL položky určené parametrem Path nebo InputObject tak, aby odpovídal hodnotám v zadaném objektu zabezpečení.

Výstup Get-Acl příkazu můžete uložit do proměnné a pak pomocí parametru AclObject předat proměnnou Get-Acl nebo zadat příkaz.

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

-ClearCentralAccessPolicy

Odebere zásadu centrálního přístupu ze zadané položky.

Počínaje Windows Server 2012 můžou správci pomocí služby Active Directory a Zásady skupiny nastavit zásady centrálního přístupu pro uživatele a skupiny. Další informace najdete v tématu Dynamické Access Control: Přehled scénáře.

Tento parametr byl zaveden v Windows PowerShell 3.0.

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

-Confirm

Před spuštěním rutiny zobrazí výzvu k potvrzení.

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

-Exclude

Vynechá zadané položky. Hodnota tohoto parametru kvalifikuje parametr Path . Zadejte prvek cesty nebo vzor, například *.txt. Jsou povoleny zástupné dokumentace.

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

-Filter

Určuje filtr ve formátu nebo jazyce poskytovatele. Hodnota tohoto parametru kvalifikuje parametr Path . Syntaxe filtru, včetně použití zástupných znaků, závisí na poskytovateli. Filtry jsou efektivnější než jiné parametry, protože zprostředkovatel je použije při načítání objektů, a ne když powershellové filtruje objekty po jejich načtení.

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

-Include

Změní jenom zadané položky. Hodnota tohoto parametru kvalifikuje parametr Path . Zadejte prvek cesty nebo vzor, například *.txt. Jsou povoleny zástupné dokumentace.

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

-InputObject

Změní popisovač zabezpečení zadaného objektu. Zadejte proměnnou obsahující objekt nebo příkaz, který získá objekt.

Objekt nelze změnit na Set-Acl. Místo toho použijte parametr InputObject explicitně v příkazu.

Tento parametr byl zaveden v Windows PowerShell 3.0.

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

-LiteralPath

Změní popisovač zabezpečení zadané položky. Na rozdíl od cesty se hodnota parametru LiteralPath používá přesně tak, jak je zadána. Žádné znaky nejsou interpretovány jako zástupné znaky. Pokud cesta obsahuje řídicí znaky, uzavřete ji do jednoduchých uvozovek ('). Jednoduché uvozovky říkají PowerShellu, aby neinterpretovat žádné znaky jako řídicí sekvence.

Tento parametr byl zaveden v Windows PowerShell 3.0.

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

-Passthru

Vrátí objekt, který představuje popisovač zabezpečení, který byl změněn. Ve výchozím nastavení tato rutina negeneruje žádný výstup.

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

-Path

Změní popisovač zabezpečení zadané položky. Zadejte cestu k položce, například cestu k souboru nebo klíči registru. Jsou povoleny zástupné cardy.

Pokud předáte objekt Set-Acl zabezpečení (buď pomocí parametrů AclObject nebo SecurityDescriptor , nebo předáním objektu zabezpečení z Get-Acl do Set-Acl), a vynecháte parametr Path (název a hodnota), Set-Acl použije cestu, která je součástí objektu zabezpečení.

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

-WhatIf

Zobrazuje, co by se stalo při spuštění rutiny. Rutina není spuštěna.

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

Vstupy

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

Objekt seznamu ACL nebo popisovač zabezpečení můžete převést na Set-Acl.

Výstupy

FileSecurity

Ve výchozím nastavení Set-Acl negeneruje žádný výstup. Pokud ale použijete parametr Passthru , vygeneruje objekt zabezpečení. Typ objektu zabezpečení závisí na typu položky.

Poznámky

Tato rutina je dostupná jenom na platformách Windows.

Rutinu Set-Acl podporuje systém souborů PowerShellu a poskytovatelé registru. Můžete ho použít ke změně popisovačů zabezpečení souborů, adresářů a klíčů registru.