Set-Acl
Změní popisovač zabezpečení zadané položky, například soubor nebo klíč registru.
Syntaxe
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, například souboru nebo klíče registru, aby odpovídal hodnotám v popisovači zabezpečení, který zadáte.
Chcete-li použít Set-Acl
, použijte Path nebo InputObject parametr identifikovat položku, jejíž popisovač zabezpečení chcete změnit. Potom pomocí parametrů AclObject nebo SecurityDescriptor zadejte popisovač zabezpečení, který obsahuje 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í 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 pomocí rutiny Get-Acl
získá popisovač zabezpečení Dog.txt souboru.
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 k odeslání popisovače zabezpečení z Get-Acl
příkazu do Set-Acl
příkazu používá operátor kanálu (|
).
První příkaz pomocí rutiny Get-Acl
získá popisovač zabezpečení Dog.txt souboru. Operátor kanálu (|
) předá objekt, který představuje Dog.txt popisovač zabezpečení 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 aplikují popisovače zabezpečení v souboru File0.txt na 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 uloží do $NewACL
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 do Set-Acl
rutiny, 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 tomto případě by druhý příkaz v kanálu 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 pomocí rutiny Get-Acl
získá popisovač zabezpečení Dog.txt souboru.
Dále se vytvoří proměnné, které převedou zděděná pravidla přístupu na explicitní pravidla přístupu. Chcete-li chránit pravidla přístupu přidružená k této dědičnosti, nastavte proměnnou $isProtected
na $true
hodnotu . Pokud chcete povolit dědičnost, nastavte $isProtected
hodnotu $false
. Další informace najdete v tématu Nastavení ochrany pravidel přístupu.
Nastavte proměnnou $preserveInheritance
tak, aby $true
se zachovala zděděná pravidla přístupu nebo $false
aby se odebrala zděděná přístupová pravidla. Pak 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 zděděné 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 na 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 pomocí rutiny Get-Acl
získá popisovač zabezpečení Dog.txt souboru.
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 hodnoty 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() a 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 nebo zadat Get-Acl
příkaz.
Typ: | Object |
Position: | 1 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | 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 naleznete v tématu Dynamické řízení přístupu: Přehled scénáře.
Tento parametr byl představen ve Windows PowerShellu 3.0.
Typ: | SwitchParameter |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Confirm
Před spuštěním rutiny zobrazí výzvu k potvrzení.
Typ: | SwitchParameter |
Aliasy: | cf |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Exclude
Vynechá zadané položky. Hodnota tohoto parametru kvalifikuje parametr Path . Zadejte element nebo vzor cesty, například *.txt
. Jsou povoleny zástupné cardy.
Typ: | String[] |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | 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ů, místo aby po načtení objekty vyfiltroval PowerShell.
Typ: | String |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | True |
-Include
Změní pouze zadané položky. Hodnota tohoto parametru kvalifikuje parametr Path .
Zadejte element nebo vzor cesty, například *.txt
. Jsou povoleny zástupné cardy.
Typ: | String[] |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | True |
-InputObject
Změní popisovač zabezpečení zadaného objektu. Zadejte proměnnou obsahující objekt nebo příkaz, který objekt získá.
Objekt, který má být změněn, nelze převést na Set-Acl
. Místo toho použijte parametr InputObject explicitně v příkazu.
Tento parametr byl představen ve Windows PowerShellu 3.0.
Typ: | PSObject |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | 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 nepřekládaly žádné znaky jako řídicí sekvence.
Tento parametr byl představen ve Windows PowerShellu 3.0.
Typ: | String[] |
Aliasy: | PSPath |
Position: | Named |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | 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.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | 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í.
Typ: | String[] |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | True |
-WhatIf
Zobrazuje, co by se stalo při spuštění rutiny. Rutina není spuštěna.
Typ: | SwitchParameter |
Aliasy: | wi |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
Vstupy
Objekt seznamu ACL můžete do této rutiny převést.
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.
Pokud použijete parametr PassThru , vrátí tato rutina 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.