Změní deskriptor zabezpečení zadané položky, například souboru nebo klíče registru.
Syntaxe
Set-Acl <String> <Object> >] >]
Set-Acl <PSObject> <Object> >] >]
Set-Acl -LiteralPath <String> <Object> >] >]
Popis
Kameta Set-Acl
změní deskriptor zabezpečení zadané položky, například souboru nebo klíče registru, aby odpovídal hodnotám v deskriptoru zabezpečení, který zadáte.
Pro použití příkazu Set-Acl
použijte parametr Path nebo InputObject k identifikaci položky, jejíž bezpečnostní deskriptor chcete změnit. Poté použijte parametry AclObject nebo SecurityDescriptor pro dodání deskriptoru zabezpečení, který obsahuje hodnoty, které chcete použít. Set-Acl
použije dodaný bezpečnostní deskriptor. Jako vzor použije hodnotu parametru AclObject a změní hodnoty v deskriptoru zabezpečení položky tak, aby odpovídaly hodnotám v parametru AclObject.
Příklady
Příklad 1: Kopírování deskriptoru 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 kopírují hodnoty z deskriptoru zabezpečení souboru Dog.txt do deskriptoru zabezpečení souboru Cat.txt. Po dokončení příkazů jsou bezpečnostní deskriptory souborů Dog.txta Cat.txt totožné.
První příkaz používá rutinu Get-Acl
k získání bezpečnostního deskriptoru souboru Dog.txt.Operátor přiřazení (=
) uloží deskriptor zabezpečení do hodnoty proměnné $DogACL.
Druhý příkaz pomocí Set-Acl
změní hodnoty v ACL souboru Cat.txt na hodnoty v $DogACL
.
Hodnotou parametru Path je cesta k souboru Cat.txt. Hodnota parametru AclObjectparametr je model ACL, v tomto případě ACL souboru Dog.txt, jak je uložen v proměnné $DogACL
.
Příklad 2: Použití operátoru pipeline k předání deskriptoru
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 apipeline (|
) k odeslání deskriptoru zabezpečení z příkazu Get-Acl
do příkazu Set-Acl
.
První příkaz používá rutinu Get-Acl
k získání deskriptoru zabezpečení souboru Dog.txt. Operátor pipeline (|
) předá objekt, který představuje deskriptor zabezpečení souboru Dog.txt, rutině Set-Acl
.
Druhý příkaz použije rutinu Set-Acl
k použití deskriptoru zabezpečení souboru Dog.txt na soubor Cat.txt.Po dokončení příkazu jsou ACL souborů Dog.txt a Cat.txt identické.
Příklad 3: Použití deskriptoru zabezpečení na více souborů
$NewAcl = Get-Acl File0.txtGet-ChildItem -Path "C:\temp" -Recurse -Include "*.txt" -Force | Set-Acl -AclObject $NewAcl
Tyto příkazy použijí deskriptory zabezpečení v souboru0.txt na všechny textové soubory v adresáři C:\Temp
a všech jeho podadresářích.
První příkaz získá deskriptor zabezpečení souboru File0.txt v aktuálním adresáři a pomocí operátoru přiřazení (=
) jej uloží do proměnné $NewACL
.
První příkaz v řetězci používá rutinu Get-ChildItem k získání všech textových souborů v adresářiC:\Temp
. Parametr Recurse rozšiřuje příkaz na všechny podadresáře adresářeC:\temp
. Parametr Include omezuje načtené soubory na ty, které mají příponu 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 pracuje s adresáři, nikoliv se soubory.)
Operátor pipeline (|
) odešle objekty představující načtené soubory do Set-Acl
cmdlet, který použije bezpečnostní deskriptor v parametru AclObject na všechny soubory v pipeline.
V praxi je nejlepší použít parametr WhatIf u všech příkazů Set-Acl
, které mohou ovlivnit více než jednu položku. V tomto případě by druhým příkazem v pipeline byl příkazSet-Acl -AclObject $NewAcl -WhatIf
. Tento příkaz obsahuje seznam souborů, které by byly příkazem ovlivněny. Po přezkoumání výsledku můžete příkaz spustit znovu bez parametru WhatIf.
Příklad 4: Zakázat dědičnost a zachovat zděděná pravidla 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
Těmito příkazy se zakáže dědičnost přístupu z nadřazených složek a zároveň se zachovají existující zděděná pravidla přístupu.
První příkaz používá rutinu Get-Acl
k získání deskriptoru zabezpečení souboru Dog.txt.
Následuje vytvoření proměnných pro převod zděděných pravidel přístupu na explicitní pravidla přístupu. Chcete-li ochránit související pravidla přístupu před děděním, nastavte proměnnou $isProtected
na hodnotu$true
.chcete-li dědění povolit, nastavte proměnnou $isProtected
na hodnotu $false
. Další informace naleznete v části Ochrana pravidel přístupu. proměnnou $preserveInheritance
nastavte na $true
pro zachování zděděných pravidel přístupu; false pro odstranění zděděných pravidel přístupu. Pak se ochrana pravidel přístupu aktualizuje pomocí metodySetAccessRuleProtection().
Poslední příkaz používá Set-Acl
pro použití bezpečnostního deskriptoru to Dog.txt. Po dokončení příkazu budou ACL souboru Dog.txt, které byly zděděny ze složky Pets, aplikovány přímo na soubor Dog.txt a nové zásady přístupu přidané do složky Pets nezmění přístup k souboru Dog.txt.
Příklad 5: Udělení plné kontroly nad souborem Administrators
$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žívá rutinu Get-Acl
k získání deskriptoru zabezpečení souboru Dog.txt.
Další proměnné jsou vytvořeny pro udělení plné kontroly nad souborem Dog.txt skupině BUILTIN\Administrators. Proměnná $identity
nastavená na jméno účtu auser. Proměnná$fileSystemRights
nastavená na FullControl a může být libovolnou z hodnotFileSystemRights, která určuje typ operace spojené s pravidlem přístupu. Proměnná $type
nastavená na hodnotu „Allow“ určuje, zda má být operace povolena nebo zamítnuta. Proměnná $fileSystemAccessRuleArgumentList
je seznam argumentů, který má být předán při vytváření nového objektu FileSystemAccessRule. Poté se vytvoří nový objekt FileSystemAccessRule a objekt FileSystemAccessRule se předá metoděSetAccessRule(), přidá nové pravidlo přístupu.
Poslední příkaz používá Set-Acl
k použití bezpečnostního deskriptoru to Dog.txt. Po dokončení příkazu bude mít skupina BUILTIN\Administrators plnou kontrolu nad souborem Dog.txt.
Parameters
Určuje ACL s požadovanými hodnotami vlastností. Set-Acl
Změní ACL položky zadané parametrem Path nebo InputObject tak, aby odpovídalo hodnotám v zadaném objektu zabezpečení.
Můžete uložit výstup příkazu Get-Acl
do proměnné a pak použít parametr AclObject k předání proměnné nebo zadat příkaz Get-Acl
.
Typ: | Objekt |
Pozice: | 1 |
Výchozí hodnota: | Nic |
Přijmout vstup z potrubí: | True |
Accept wildcard characters: | False |
Odstraní centrální politiku přístupu z uvedené položky.
Počínaje systémem Windows Server 2012 mohou správci používat službu Active Directory a zásady skupiny k nastavení centrálních zásad přístupu pro uživatele a skupiny. Další informace naleznete v částiDynamické řízení přístupu:
Tento parametr byl zaveden v prostředí Windows PowerShell 3.0.
Typ: | PřepínačParametr |
Pozice: | Název |
Výchozí hodnota: | False |
Přijímá vstup z potrubí: | False |
Accept wildcard characters: | False |
Před spuštěním rutiny vás vyzve k potvrzení.
Typ: | PřepínačParametr |
Aliasy: | cf |
Pozice: | Název |
Výchozí hodnota: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Vyloučí zadané položky. Hodnota tohoto parametru kvalifikuje parametr Path. Zadejte prvek nebo vzor apath, například *.txt
. Zástupné znaky jsou povoleny.
Typ: | Řetězec |
Pozice: | Název |
Výchozí hodnota: | Nic |
Přijímá vstup z potrubí: | False |
Accept wildcard characters: | True |
Určuje filtr ve formátu nebo jazyku poskytovatele. Hodnota tohoto parametru kvalifikuje parametrPath. Syntaxe filtru, včetně použití zástupných znaků, závisí na poskytovateli. Filtry jsou efektivnější než jiné parametry, protože poskytovatel je použije při načítání objektů, místo aby PowerShell filtroval objekty po jejich načtení.
Typ: | Řetězec |
Pozice: | Název |
Výchozí hodnota: | Jedna |
Přijmout vstup z potrubí: | False |
Accept wildcard characters: | True |
Mění pouze zadané položky. Hodnota tohoto parametru kvalifikuje parametr Path. zadejte prvek nebo vzor cesty, například *.txt
. Zástupné znaky jsou povoleny.
Typ: | Řetězec |
Pozice: | Název |
Výchozí hodnota: | Nulová |
Přijímá vstup z potrubí: | False |
Accept wildcard characters: | True |
Změní bezpečnostní deskriptor zadaného objektu. Zadejte proměnnou, která obsahuje objektnebo příkaz, který získá objekt.
Objekt, který má být změněn, nelze zadat do roury Set-Acl
. Místo toho použijte v příkazu explicitně parametr InputObject.
Tento parametr byl zaveden v prostředí Windows PowerShell 3.0.
Typ: | PSObject |
Pozice: | 0 |
Výchozí hodnota: | None |
Přijmout vstup do potrubí: | True |
Accept wildcard characters: | False |
Změní bezpečnostní deskriptor zadané položky. Na rozdíl od parametru Path se hodnota parametruLiteralPath použije přesně tak, jak je zadána. Žádné znaky nejsou interpretovány jako náhradní znaky. Pokud cesta obsahuje znaky escape, uzavřete ji do jednoduchých uvozovek ('
). jednoduché uvozovky říkají prostředí PowerShell, aby neinterpretovalo žádné znaky jako escape sekvence.
Tento parametr byl zaveden v prostředí Windows PowerShell 3.0.
Tento parametr byl zaveden v prostředí Windows PowerShell 3.0.
Typ: | Řetězec |
Aliasy: | PSPath |
Pozice: | Název |
Výchozí hodnota: | Nic |
Přijímá vstup do potrubí: | True |
Accept wildcard characters: | False |
Vrací objekt, který představuje změněný bezpečnostní deskriptor. Ve výchozím nastavení tato rutina negeneruje žádný výstup.
Typ: | PřepínačParametr |
Pozice: | Název |
Výchozí hodnota: | Jedna |
Přijímá vstup do potrubí: | False |
Accept wildcard characters: | False |
Změní bezpečnostní deskriptor zadané položky. Zadejte cestu k položce, například cestu k souboru nebo klíči registru. Jsou povoleny zástupné znaky.
Předáte-li Set-Acl
objekt zabezpečení (buď pomocí parametrů AclObject neboSecurityDescriptor, nebo předáním objektu zabezpečení z Get-Acl do Set-Acl
) a vynecháte-li parametr Path (název a hodnotu), Set-Acl
použije cestu, která je obsažena v tomto objektu zabezpečení.
Typ: | Řetězec |
Pozice: | 0 |
Výchozí hodnota: | None |
Přijímá vstup do potrubí: | True |
Accept wildcard characters: | True |
Ukazuje, co se stane, pokud se rutina spustí. Rutina se nespustí.
Typ: | PřepínačParametr |
Aliasy: | wi |
Pozice: | Název |
Výchozí hodnota: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Inputs
System.Security.AccessControl.ObjectSecurity, System.Security.AccessControl.CommonSecurityDescriptor
Do Set-Acl
můžete připojit objekt ACL nebo bezpečnostní deskriptor.
Výstupy
FileSecurity
Ve výchozím nastavení Set-Acl
negeneruje žádný výstup. Pokud však použijete parametr Passthru,vygeneruje objekt zabezpečení. Typ objektu zabezpečení závisí na typu položky.
Poznámky
Tato rutina je k dispozici pouze na platformách Windows.
Krutina Set-Acl
je podporována zprostředkovateli souborového systému a registru prostředí PowerShell. Proto ji můžete použít ke změně deskriptorů zabezpečení souborů, adresářů a klíčů registru.
- Get-Acl
- FileSystemAccessRule
- ObjectSecurity.SetAccessRuleProtection
- FileSystemRights
.