Set-Acl
Změní popisovač zabezpečení zadané položky, například soubor nebo klíč registru.
Syntaxe
ByPath (Výchozí)
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
Tato rutina je dostupná jenom na platformě Windows.
Rutina Set-Acl změní popisovač zabezpečení zadané položky, například souboru nebo klíče registru, tak, aby odpovídal hodnotám v popisovači zabezpečení, který zadáte.
Chcete-li použít Set-Acl, pomocí Path nebo InputObject parametr identifikujte položku, jejíž popisovač zabezpečení chcete změnit. Potom pomocí parametrů AclObject nebo SecurityDescriptor zadejte popisovač zabezpečení s hodnotami, 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í Dog.txt souboru do popisovače zabezpečení Cat.txt souboru. Po dokončení příkazů jsou popisovače zabezpečení Dog.txt a Cat.txt souborů stejné.
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 ACL modelu, v tomto případě ACL Dog.txt uložené v proměnné $DogACL.
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 příkazu Get-Acl do příkazu Set-Acl.
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 do rutiny Set-Acl.
Druhý příkaz používá Set-Acl k použití popisovače 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 aplikují popisovače zabezpečení v souboru File0.txt na všechny textové soubory v adresáři C:\Temp a všech jeho podadresářích.
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 uloží do proměnné $NewACL.
První příkaz v zpracovatelském řetězci používá rutinu Get-ChildItem k získání všech textových souborů v adresáři C:\Temp. Parametr Recurse rozšiřuje příkaz do všech podadresářů C:\temp. Parametr Include omezuje soubory načtené na soubory s příponou názvu souboru .txt. 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 do rutiny 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 příkazy Set-Acl, které můžou ovlivnit více než jednu položku. V tomto případě by druhý příkaz v potrubí byl Set-Acl -AclObject $NewAcl -WhatIf. Tento příkaz zobrazí seznam souborů, na které má příkaz vliv. 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řed děděním, nastavte proměnnou $isProtected na $true. Pokud chcete povolit dědičnost, nastavte $isProtected na $false. Další informace najdete v tématu nastavení ochrany pravidel přístupu.
Nastavte proměnnou $preserveInheritance na $true, aby se zachovala zděděná pravidla přístupu 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žívá Set-Acl k použití popisovače zabezpečení Dog.txt. Po dokončení příkazu se ACL Dog.txt, které byly zděděny ze složky Domácích zvířat, použijí přímo na Dog.txta nové zásady přístupu přidané do složky Domácích zvířat 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
$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
Tento příkaz udělí BUILTIN\Administrators skupině Úplné řízení souboru 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á $fileSystemRights nastavená na FullControl a může být libovolnou z FileSystemRights hodnot, které určují typ operace přidružené k pravidlu přístupu. Proměnná $type nastavená 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 objektu. Potom se vytvoří nový objekt FileSystemAccessRule a objekt FileSystemAccessRule se předá metodě SetAccessRule(), která přidá nové pravidlo přístupu.
Poslední příkaz používá Set-Acl k použití popisovače zabezpečení 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í ACL položky určené parametrem Path nebo InputObject tak, aby odpovídalo hodnotám v zadaném objektu zabezpečení.
Výstup příkazu Get-Acl můžete uložit do proměnné a potom pomocí parametru AclObject předat proměnnou nebo zadat příkaz Get-Acl.
Vlastnosti parametru
| Typ: | Object |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | 1 |
| Povinné: | True |
| Hodnota z kanálu: | True |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-ClearCentralAccessPolicy
Odebere zásadu centrálního přístupu ze zadané položky.
Od Windows Serveru 2012 můžou správci pomocí služby Active Directory a zásad skupiny nastavit zásady centrálního přístupu pro uživatele a skupiny. Další informace najdete v tématu Dynamické řízení přístupu: Přehled scénářů.
Tento parametr byl představen ve Windows PowerShellu 3.0.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | False |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | PSPath, PO |
Sady parametrů
ByPath
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
ByLiteralPath
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-Confirm
Před spuštěním cmdletu vás vyzve k potvrzení.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | False |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | viz |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-Exclude
Vynechá zadané položky. Hodnota tohoto parametru kvalifikuje parametr Path. Zadejte prvek cesty nebo vzor, například *.txt. Jsou povoleny zástupné symboly.
Vlastnosti parametru
| Typ: | String[] |
| Default value: | None |
| Podporuje zástupné znaky: | True |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-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ů, místo aby po načtení objekty vyfiltroval PowerShell.
Vlastnosti parametru
| Typ: | String |
| Default value: | None |
| Podporuje zástupné znaky: | True |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-Include
Změní pouze zadané položky. Hodnota tohoto parametru kvalifikuje parametr Path.
Zadejte prvek cesty nebo vzor, například *.txt. Jsou povoleny zástupné symboly.
Vlastnosti parametru
| Typ: | String[] |
| Default value: | None |
| Podporuje zástupné znaky: | True |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-InputObject
Změní popisovač zabezpečení zadaného objektu. Zadejte proměnnou obsahující objekt nebo příkaz, který objekt získá.
Objekt nelze změnit na Set-Acl. Místo toho použijte parametr InputObject explicitně v příkazu.
Tento parametr byl představen ve Windows PowerShellu 3.0.
Vlastnosti parametru
| Typ: | PSObject |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
ByInputObject
| Position: | 0 |
| Povinné: | True |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | True |
| Hodnota ze zbývajících argumentů: | False |
-LiteralPath
Změní popisovač zabezpečení zadané položky. Na rozdíl od Pathse hodnota parametru LiteralPath používá přesně tak, jak je zadán. Žádný znak není interpretován jako zástupný znak. Pokud cesta obsahuje escape znaky, uzavřete ji do jednoduchých uvozovek (').
Jednoduché uvozovky říkají PowerShellu, aby žádné znaky neinterpretoval jako únikové sekvence.
Tento parametr byl představen ve Windows PowerShellu 3.0.
Vlastnosti parametru
| Typ: | String[] |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | PSPath |
Sady parametrů
ByLiteralPath
| Position: | Named |
| Povinné: | True |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | True |
| Hodnota ze zbývajících argumentů: | 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.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | 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é symboly.
Pokud předáte objekt zabezpečení Set-Acl (buď pomocí AclObject nebo SecurityDescriptor parametry 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í.
Vlastnosti parametru
| Typ: | String[] |
| Default value: | None |
| Podporuje zástupné znaky: | True |
| DontShow: | False |
Sady parametrů
ByPath
| Position: | 0 |
| Povinné: | True |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | True |
| Hodnota ze zbývajících argumentů: | False |
-WhatIf
Ukazuje, co se stane, když se příkaz spustí. Příkazový modul nebyl spuštěn.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | False |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | Wi |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
CommonParameters
Tato rutina podporuje běžné parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction a -WarningVariable. Další informace najdete v about_CommonParameters.
Vstupy
ObjectSecurity
Objekt seznamu ACL můžete předat této cmdlet.
CommonSecurityDescriptor
K této rutině můžete připojit popisovač zabezpečení.
Výstupy
None
Ve výchozím nastavení tato rutina nevrací žádný výstup.
FileSecurity
Pokud použijete parametr PassThru, vrátí tato rutina objekt zabezpečení. Typ objektu zabezpečení závisí na typu položky.
Poznámky
Tento cmdlet je dostupný pouze na platformách Windows.
Rutina Set-Acl je podporována zprostředkovateli systému souborů PowerShellu a registru. Můžete ho použít ke změně popisovačů zabezpečení souborů, adresářů a klíčů registru.