Schimbă descriptorul de securitate al unui element specificat, cum ar fi un fișier sau o cheie de registru.
Sintaxa
Set-Acl <String> <Object> >] >]
Set-Acl <PSObject> <Object> >] >]
Set-Acl -LiteralPath <String> <Object> >] >]
Descriere
Cmodelul Set-Acl
modifică descriptorul de securitate al unui element specificat, cum ar fi un fișier sau o cheie de registru, pentru a se potrivi cu valorile dintr-un descriptor de securitate pe care îl furnizați.
Pentru a utiliza Set-Acl
, utilizați parametrul Path sau InputObject pentru a identifica elementul al cărui descriptor de securitate doriți să îl modificați. Apoi, utilizați parametrii AclObject sau SecurityDescriptor pentru a furniza un descriptor de securitate care are valorile pe care doriți să le aplicați. Set-Acl
aplică descriptorul de securitate care este furnizat. Folosește valoarea parametrului AclObject ca model și modifică valorile din descriptorul de securitate al elementului pentru a se potrivi cu valorile din parametrul AclObject.
Exemple
Exemplu 1: Copierea unui descriptor de securitate dintr-un fișier în altul
$DogACL = Get-Acl -Path "C:\Dog.txt"Set-Acl -Path "C:\Cat.txt" -AclObject $DogACL
Aceste comenzi copiază valorile din descriptorul de securitate al fișierului Dog.txt în descriptorul de securitate al fișierului Cat.txt. La finalizarea comenzilor, descriptorii de securitate ai fișierelor Dog.txtși Cat.txt sunt identici.
Prima comandă utilizează cmdlet-ul Get-Acl
pentru a obține descriptorul de securitate al fișierului Dog.txt.Operatorul de atribuire (=
) stochează descriptorul de securitate în valoarea variabilei $DogACL.
Cea de-a doua comandă utilizează Set-Acl
pentru a schimba valorile din ACL a fișierului Cat.txt cu valorile din$DogACL
.
Valoarea parametrului Path este calea către fișierul Cat.txt. Valoarea parametrului AclObjectparametru este ACL-ul modelului, în acest caz, ACL-ul din Dog.txt, așa cum este salvat în variabila $DogACL
.
Exemplu 2: Utilizați operatorul pipeline pentru a transmite un descriptor
Get-Acl -Path "C:\Dog.txt" | Set-Acl -Path "C:\Cat.txt"
Această comandă este aproape la fel ca și comanda din exemplul anterior, cu excepția faptului că utilizează operatorul apipeline (|
) pentru a trimite descriptorul de securitate de la o comandă Get-Acl
la o comandă Set-Acl
.
Prima comandă utilizează cmdlet-ul Get-Acl
pentru a obține descriptorul de securitate al fișierului Dog.txt. Operatorulpipeline (|
) transmite un obiect care reprezintă descriptorul de securitate al fișierului Dog.txt către cmdlet-ul Set-Acl
.
Cea de-a doua comandă utilizează Set-Acl
pentru a aplica descriptorul de securitate al fișierului Dog.txt la Cat.txt.La finalizarea comenzii, ACL-urile fișierelor Dog.txt și Cat.txt sunt identice.
Exemplu 3: Aplicarea unui descriptor de securitate la mai multe fișiere
$NewAcl = Get-Acl File0.txtGet-ChildItem -Path "C:\temp" -Recurse -Include "*.txt" -Force | Set-Acl -AclObject $NewAcl
Aceste comenzi aplică descriptorii de securitate în fișierele File0.txt la toate fișierele text din directorul C:\Temp
și la toate subdirectoarele acestuia.
Prima comandă obține descriptorul de securitate al fișierului File0.txt din directorul curent și utilizează operatorul de atribuire (=
) pentru a-l stoca în variabila $NewACL
.
Prima comandă din conductă utilizează cmdlet Get-ChildItem pentru a obține toate fișierele text din directorulC:\Temp
. Parametrul Recurse extinde comanda la toate subdirectoarele dinC:\temp
. Parametrul Include limitează fișierele recuperate la cele cu extensia de nume de fișier .txt
. Parametrul Force obține fișierele ascunse, care altfel ar fi excluse. (Nu puteți utiliza c:\temp\*.txt
, deoarece parametrul Recurse funcționează asupra directoarelor, nu asupra fișierelor.)
Operatorul pipeline (|
) trimite obiectele care reprezintă fișierele recuperate către Set-Acl
cmdlet, care aplică descriptorul de securitate din parametrul AclObject tuturor fișierelor din pipeline.
În practică, cel mai bine este să utilizați parametrul WhatIf cu toate comenzile Set-Acl
care pot afecta mai mult de un element. În acest caz, a doua comandă din pipeline ar fiSet-Acl -AclObject $NewAcl -WhatIf
. Această comandă enumeră fișierele care ar fi afectate decomandă. După ce examinați rezultatul, puteți rula din nou comanda fără parametrul WhatIf.
Exemplu 4: Dezactivarea moștenirii și păstrarea regulilor de acces moștenite
$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
Aceste comenzi este vor dezactiva moștenirea accesului de la folderele părinte, păstrând în același timp regulile de acces moștenite existente.
Prima comandă utilizează cmdlet-ul Get-Acl
pentru a obține descriptorul de securitate al fișierului Dog.txt.
În continuare, se creează variabile pentru a converti regulile de acces moștenite în reguli de acces explicite. Pentru a proteja regulile de acces asociate cu acesta de moștenire, setați variabila $isProtected
la $true
. pentru a permite moștenirea, setați $isProtected
la $false
. Pentru mai multe informații, a se vedea setul de protecție a regulilor de acces.variabila $preserveInheritance
setată la $true
pentru a păstra regulile de acces moștenite; false pentru a elimina regulile de acces moștenite. Apoi, protecția regulilor de acces este actualizată folosind metodaSetAccessRuleProtection().
Ultima comandă folosește Set-Acl
pentru a aplica descriptorul de securitate din la Dog.txt. La finalizarea comenzii, ACL-urile din Dog.txt care au fost moștenite de la folderul Pets vor fi aplicate direct la Dog.txt, iar noile politici de acces adăugate la Pets nu vor modifica accesul la Dog.txt.
Exemplu 5: Acordarea controlului total al fișierului pentru administratori
$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
Această comandă va acorda grupului BUILTIN\Administrators controlul total al fișierului Dog.txt.
Prima comandă utilizează cmdlet-ul Get-Acl
pentru a obține descriptorul de securitate al fișierului Dog.txt.
Sunt create următoarele variabile pentru a acorda grupului BUILTIN\Administrators controlul deplin al fișierului Dog.txt. Variabila $identity
setată la numele contului auser. Variabila$fileSystemRights
setată la FullControl și poate fi oricare dintre valorile FileSystemRights care specifică tipul de operațiune asociat cu regula de acces. Variabila $type
setată la „Allow” pentru a preciza dacă se permite sau nu operațiunea. Variabila $fileSystemAccessRuleArgumentList
este o listă de argumente care trebuie transmisă la crearea noului obiect FileSystemAccessRule. Apoi se creează un nou obiect FileSystemAccessRule, iar obiectul FileSystemAccessRule este trecut la metodaSetAccessRule(), adaugă noua regulă de acces.
Ultima comandă folosește Set-Acl
pentru a aplica descriptorul de securitate din la Dog.txt. Când comanda se finalizează, grupul BUILTIN\Administrators va avea control total asupra Dog.txt.
Parameters
Specifică o ACL cu valorile proprietăților dorite. Set-Acl
modifică ACL-ul elementului specificat de parametrul Path sau InputObject pentru a se potrivi cu valorile din obiectul de securitate specificat.
Puteți salva ieșirea unei comenzi Get-Acl
într-o variabilă și apoi să utilizați parametrul AclObject pentru a trece variabila, sau să tastați o comandă Get-Acl
.
Tip: | Object | |
Poziție: | 1 | |
Valoare implicită: | None | |
Acceptă intrarea în conductă: | True | |
Acceptă caractere wildcard: | False |
Înlătură politica de acces central de la elementul specificat.
Începând cu Windows Server 2012, administratorii pot utiliza Active Directory și Group Policy pentru a setapolitici de acces centralizate pentru utilizatori și grupuri. Pentru mai multe informații, consultațiControlul dinamic al accesului: Prezentare generală a scenariului.
Acest parametru a fost introdus în Windows PowerShell 3.0.
Tip: | SwitchParameter |
Poziție: | Denumit |
Valoare implicită: | False |
Acceptă intrarea în conductă: | False |
Accept wildcard characters: | False |
Vă solicită confirmarea înainte de a rula cmdlet-ul.
Type: | SwitchParameter | |
Aliase: | cf | |
Position: | Named | |
Valoare implicită: | False | |
Acceptă intrări de tip pipeline: | False | |
Acceptă caractere wildcard: | False |
Omite elementele specificate. Valoarea acestui parametru califică parametrul Path. Introduceți elementul sau modelul apath, cum ar fi *.txt
. Sunt permise caractere wildcards.
Tip: | Șir de caractere |
Poziție: | Numit |
Valoare implicită: | Nimic |
Aceptă intrarea în conductă: | False |
Acceptă caractere wildcard: | True |
Specifică un filtru în formatul sau limba furnizorului. Valoarea acestui parametru califică parametrulPath. Sintaxa filtrului, inclusiv utilizarea caracterelor sălbatice, depinde de furnizor. Filtrele sunt mai eficiente decât alți parametri, deoarece furnizorul le aplică atunci când recuperează obiectele, în loc ca PowerShell să filtreze obiectele după ce acestea sunt recuperate.
Type: | String | |
Position: | Numit | |
Valoare implicită: | None | |
Acceptă intrarea în conductă: | False | |
Acceptă caractere wildcard: | True |
Modifică numai elementele specificate. Valoarea acestui parametru califică parametrul Path. introduceți un element sau un model de cale, cum ar fi *.txt
. Sunt permise caractere wildcards.
Tip: | Șir de caractere |
Poziție: | Numit |
Valoare implicită: | Nimic |
Aceptă intrarea în conductă: | False |
Acceptă caractere wildcard: | True |
Schimbă descriptorul de securitate al obiectului specificat. Introduceți o variabilă care conține obiectulsau o comandă care obține obiectul.
Nu se poate pipeta obiectul care urmează să fie modificat la Set-Acl
. În schimb, utilizați parametrul InputObjectexplicit în comandă.
Acest parametru a fost introdus în Windows PowerShell 3.0.
Tip: | PSObject | |
Poziție: | 0 | |
Valoare implicită: | None | |
Acceptă intrarea în conductă: | True | |
Acceptă caractere wildcard: | False |
Schimbă descriptorul de securitate al elementului specificat. Spre deosebire de Path, valoarea parametruluiLiteralPath este utilizată exact așa cum este tastată. Niciun caracter nu este interpretat cawildcards. Dacă calea include caractere de evadare, includeți-o între ghilimele simple ('
).Ghilimelele simple îi spun lui PowerShell să nu interpreteze niciun caracter ca secvență de evadare.
Acest parametru a fost introdus în Windows PowerShell 3.0.
Type: | String | |
Aliase: | PSPath | |
Positie: | Numit | |
Valoare implicită: | Nimic | |
Acceptă intrare în conductă: | True | |
Acceptă caractere wildcard: | False |
Întoarce un obiect care reprezintă descriptorul de securitate care a fost modificat. În mod implicit, acest cmdletnu generează niciun rezultat.
Tip: | SwitchParameter |
Poziție: | Numit |
Valoare implicită: | None |
Acceptă intrarea în conductă: | False |
Acceptă caractere wildcard: | False |
Schimbă descriptorul de securitate al elementului specificat. Introduceți calea către un element, cum ar fi calea către un fișier sau o cheie de registru. Sunt permise caractere wildcards.
Dacă treceți un obiect de securitate către Set-Acl
(fie prin utilizarea parametrilor AclObject sauSecurityDescriptor, fie prin trecerea unui obiect de securitate din Get-Acl către Set-Acl
) și omiteți parametrul Path (nume și valoare), Set-Acl
utilizează calea care este inclusă în acest obiect de securitate.
Type: | String | |
Position: | 0 | |
Valoare implicită: | None | |
Acceptă intrarea în conductă: | True | |
Accept wildcard characters: | True |
Află ce s-ar întâmpla dacă cmdlet-ul ar fi executat. Nu se execută cmdlet-ul.
Type: | SwitchParameter | |
Aliase: | wi | |
Position: | Named | |
Valoare implicită: | False | |
Acceptă intrare pipeline: | False | |
Acceptă caractere wildcard: | False |
Intrări
Sistem.Security.AccessControl.ObjectSecurity, System.Security.AccessControl.CommonSecurityDescriptor
Puteți direcționa un obiect ACL sau un descriptor de securitate către Set-Acl
.
Outputs
FileSecurity
În mod implicit, Set-Acl
nu generează nicio ieșire. Cu toate acestea, dacă utilizați parametrul Passthru,acesta generează un obiect de securitate. Tipul obiectului de securitate depinde de tipul elementului.
Note
Acest cmdlet este disponibil numai pe platformele Windows.
Ccmdlet Set-Acl
este suportat de sistemul de fișiere PowerShell și de furnizorii de registru. Ca atare, îl puteți utiliza pentru a modifica descriptorii de securitate ai fișierelor, directoarelor și cheilor de registru.
- Get-Acl
- FileSystemAccessRule
- ObjectSecurity.SetAccessRuleProtection
- FileSystemRights
.