Zmienia deskryptor zabezpieczeń określonego elementu, takiego jak plik lub klucz rejestru.
Syntax
Set-Acl <String> <Object> >] >]
Set-Acl <PSObject> <Object> >] >]
Set-Acl -LiteralPath <String> <Object> >] >]
Opis
Ccmdlet Set-Acl
zmienia deskryptor zabezpieczeń określonego elementu, takiego jak plik lub klucz rejestru, aby dopasować go do wartości w deskryptorze zabezpieczeń dostarczonym przez użytkownika.
Aby użyć Set-Acl
, użyj parametru Path lub InputObject do zidentyfikowania elementu, którego deskryptor zabezpieczeń chcesz zmienić. Następnie użyj parametrów AclObject lub SecurityDescriptor, aby dostarczyć deskryptor zabezpieczeń, który ma wartości, które chcesz zastosować. Set-Acl
stosuje dostarczony deskryptor bezpieczeństwa. Używa wartości parametru AclObject jako modelu i zmienia wartości w deskryptorze zabezpieczeń elementu, aby dopasować je do wartości w parametrze AclObject.
Przykłady
Przykład 1: Kopiowanie deskryptora zabezpieczeń z jednego pliku do drugiego
$DogACL = Get-Acl -Path "C:\Dog.txt"Set-Acl -Path "C:\Cat.txt" -AclObject $DogACL
Te polecenia kopiują wartości z deskryptora zabezpieczeń pliku Dog.txt do deskryptora zabezpieczeń pliku Cat.txt. Po wykonaniu poleceń deskryptory zabezpieczeń plików Dog.txt i Cat.txt są identyczne.
Pierwsze polecenie wykorzystuje cmdlet Get-Acl
do uzyskania deskryptora zabezpieczeń pliku Dog.txt.Operator przypisania (=
) zapisuje deskryptor zabezpieczeń w wartości zmiennej $DogACL.
Drugie polecenie wykorzystuje Set-Acl
do zmiany wartości w ACL pliku Cat.txt na wartości w$DogACL
.
Wartością parametru Path jest ścieżka do pliku Cat.txt. Wartością parametru AclObjectparameter jest ACL modelu, w tym przypadku ACL pliku Dog.txt zapisana w zmiennej $DogACL
.
Przykład 2: Użyj operatora potokowego do przekazania deskryptora
Get-Acl -Path "C:\Dog.txt" | Set-Acl -Path "C:\Cat.txt"
To polecenie jest prawie takie samo jak polecenie w poprzednim przykładzie, z tym że wykorzystuje operator apipeline (|
) do przesłania deskryptora zabezpieczeń z polecenia Get-Acl
do polecenia Set-Acl
.
Pierwsze polecenie wykorzystuje cmdlet Get-Acl
do uzyskania deskryptora zabezpieczeń pliku Dog.txt. Operatorpipeline (|
) przekazuje obiekt reprezentujący deskryptor zabezpieczeń Dog.txt do cmdletaSet-Acl
.
Drugie polecenie używa Set-Acl
do zastosowania deskryptora zabezpieczeń pliku Dog.txt do pliku Cat.txt.Po zakończeniu działania polecenia listy ACL plików Dog.txt i Cat.txt są identyczne.
Przykład 3: Zastosuj deskryptor zabezpieczeń do wielu plików
$NewAcl = Get-Acl File0.txtGet-ChildItem -Path "C:\temp" -Recurse -Include "*.txt" -Force | Set-Acl -AclObject $NewAcl
Te polecenia stosują deskryptory zabezpieczeń w pliku File0.txt do wszystkich plików tekstowych w katalogu C:\Temp
i wszystkich jego podkatalogach.
Pierwsze polecenie pobiera deskryptor zabezpieczeń pliku File0.txt w bieżącym katalogu i wykorzystuje operator przypisania (=
) do zapisania go w zmiennej $NewACL
.
Pierwsze polecenie w potoku wykorzystuje cmdlet Get-ChildItem do uzyskania wszystkich plików tekstowych w kataloguC:\Temp
. Parametr Recurse rozszerza polecenie na wszystkie podkatalogi kataloguC:\temp
. Parametr Include ogranicza liczbę pobieranych plików do tych z rozszerzeniem nazwy pliku .txt
. Parametr Force pobiera pliki ukryte, które w przeciwnym razie zostałyby wykluczone. (Nie można użyć parametru c:\temp\*.txt
, ponieważ parametr Recurse działa na katalogach, a nie na plikach.)
Operator rurociągu (|
) wysyła obiekty reprezentujące pobrane pliki do polecenia Set-Acl
, które stosuje deskryptor zabezpieczeń w parametrze AclObject do wszystkich plików w rurociągu.
W praktyce najlepiej jest używać parametru WhatIf ze wszystkimi poleceniami Set-Acl
, które mogą mieć wpływ na więcej niż jeden element. W tym przypadku, drugim poleceniem w potoku byłobySet-Acl -AclObject $NewAcl -WhatIf
. To polecenie zawiera listę plików, na które wpłynęłoby polecenie. Po przejrzeniu wyniku można ponownie uruchomić polecenie bez parametru WhatIf.
Przykład 4: Wyłącz dziedziczenie i zachowaj dziedziczone reguły dostępu
$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
Te polecenia wyłączą dziedziczenie dostępu z folderów nadrzędnych, zachowując jednocześnie istniejące dziedziczone reguły dostępu.
Pierwsze polecenie wykorzystuje cmdlet Get-Acl
do uzyskania deskryptora zabezpieczeń pliku Dog.txt.
Następnie tworzone są zmienne do konwersji dziedziczonych reguł dostępu na jawne reguły dostępu. Toprotect protect the access rules associated with this from inheritance, set the $isProtected
variable to$true
.to allow inheritance, set $isProtected
to $false
. Aby uzyskać więcej informacji, zobacz Ustaw ochronę reguł dostępu.Zmienna $preserveInheritance
ustawiona na $true
, aby zachować dziedziczone reguły dostępu; false, aby usunąć dziedziczone reguły dostępu. Następnie ochrona reguł dostępu jest aktualizowana przy użyciu metodySetAccessRuleProtection().
Ostatnie polecenie używa Set-Acl
do zastosowania deskryptora zabezpieczeń do pliku Dog.txt. Kiedy polecenie zostanie wykonane, listy ACL dla pliku Dog.txt, które zostały odziedziczone z folderu Pets, zostaną zastosowane bezpośrednio do pliku Dog.txt, a nowe zasady dostępu dodane do folderu Pets nie zmienią dostępu do pliku Dog.txt.
Przykład 5: Przyznanie administratorom pełnej kontroli nad plikiem
$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
To polecenie przyzna grupie BUILTIN\Administrators pełną kontrolę nad plikiem Dog.txt.
Pierwsze polecenie wykorzystuje cmdlet Get-Acl
, aby uzyskać deskryptor zabezpieczeń pliku Dog.txt.
Następnie tworzone są zmienne, aby przyznać grupie BUILTIN\Administrators pełną kontrolę nad plikiem Dog.txt. Zmienna $identity
ustawiona na nazwę konta auser. Zmienna$fileSystemRights
ustawiona na FullControl i może być dowolną z wartościFileSystemRights, która określa typ operacji związanej z regułą dostępu. Zmienna $type
ustawiona na „Allow” określa, czy zezwolić na operację, czy jej odmówić. Zmienna $fileSystemAccessRuleArgumentList
jest listą argumentów, które mają być przekazane podczas tworzenia nowego obiektu FileSystemAccessRule. Następnie tworzony jest nowy obiekt FileSystemAccessRule, a obiekt FileSystemAccessRule jest przekazywany do metodySetAccessRule(), dodaje nową regułę dostępu.
Ostatnie polecenie używa Set-Acl
do zastosowania deskryptora bezpieczeństwa do Dog.txt. Po zakończeniu działania polecenia grupa BUILTIN Administratorzy będzie miała pełną kontrolę nad plikiem Dog.txt.
Parameters
Wyznacza ACL z żądanymi wartościami właściwości. Set-Acl
zmienia ACL elementu określonego przez parametr Path lub InputObject, aby odpowiadał wartościom w określonym obiekcie zabezpieczeń.
Można zapisać dane wyjściowe polecenia Get-Acl
w zmiennej, a następnie użyć parametru AclObject do przekazania zmiennej lub wpisać polecenie Get-Acl
.
Type: | Object |
Position: | 1 |
Wartość domyślna: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Usuwa centralną politykę dostępu z określonego elementu.
Począwszy od systemu Windows Server 2012, administratorzy mogą używać usługi Active Directory i zasad grupy do ustawiania centralnych zasad dostępu dla użytkowników i grup. Aby uzyskać więcej informacji, zobaczDynamiczna kontrola dostępu: Scenario Overview.
Ten parametr został wprowadzony w Windows PowerShell 3.0.
Type: | SwitchParameter |
Position: | Named |
Wartość domyślna: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Prosi o potwierdzenie przed uruchomieniem cmdleta.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Wartość domyślna: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Omożliwia usunięcie określonych elementów. Wartość tego parametru kwalifikuje parametr Path. Wprowadź element ścieżki lub wzorzec, na przykład *.txt
. Dozwolone są symbole wieloznaczne.
Type: | String |
Position: | Named |
Wartość domyślna: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
Określa filtr w formacie lub języku dostawcy. Wartość tego parametru kwalifikuje parametrPath. Składnia filtru, w tym użycie symboli wieloznacznych, zależy od dostawcy. Filtry są bardziej wydajne niż inne parametry, ponieważ dostawca stosuje je podczas pobierania obiektów, a nie jest zmuszany przez PowerShell do filtrowania obiektów po ich pobraniu.
Type: | String |
Position: | Named |
Domyślna wartość: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
Zmienia tylko określone elementy. Wartość tego parametru kwalifikuje parametr Path.Wprowadź element ścieżki lub wzorzec, taki jak *.txt
. Dozwolone są symbole wieloznaczne.
Type: | String |
Position: | Named |
Wartość domyślna: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
Zmienia deskryptor zabezpieczeń określonego obiektu. Podaj zmienną, która zawiera obiekt lub polecenie, które pobiera obiekt.
Nie można przesyłać obiektu, który ma zostać zmieniony, do Set-Acl
. Zamiast tego należy użyć parametru InputObject parameterexplicitly w poleceniu.
Ten parametr został wprowadzony w Windows PowerShell 3.0.
Type: | PSObject |
Position: | 0 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Zmienia deskryptor zabezpieczeń określonego elementu. W przeciwieństwie do Path, wartość parametruLiteralPath jest używana dokładnie w takiej postaci, w jakiej została wpisana. Żadne znaki nie są interpretowane jako znaki wieloznaczne. Jeśli ścieżka zawiera znaki ucieczki, należy ująć ją w pojedynczy cudzysłów ('
).Pojedynczy cudzysłów mówi PowerShellowi, aby nie interpretował żadnych znaków jako sekwencji ucieczki.
Ten parametr został wprowadzony w Windows PowerShell 3.0.
Type: | String |
Alias: | PSPath |
Pozycja: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Zwraca obiekt reprezentujący deskryptor zabezpieczeń, który został zmieniony. Domyślnie ten cmdlet nie generuje żadnych danych wyjściowych.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Zmienia deskryptor zabezpieczeń określonego elementu. Wprowadź ścieżkę do elementu, taką jak ścieżka do pliku lub klucza rejestru. Dozwolone są symbole wieloznaczne.
Jeśli do Set-Acl
zostanie przekazany obiekt zabezpieczeń (za pomocą parametrów AclObject lubSecurityDescriptor albo przez przekazanie obiektu zabezpieczeń z polecenia Get-Acl do Set-Acl
), a pominięty zostanie parametr Path (nazwa i wartość), Set-Acl
użyje ścieżki zawartej w obiekcie zabezpieczeń.
Type: | String |
Position: | 0 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | True |
Pokazuje, co by się stało, gdyby cmdlet został uruchomiony. Polecenie nie jest uruchamiane.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Wartość domyślna: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Inputs
System.Security.AccessControl.ObjectSecurity, System.Security.AccessControl.CommonSecurityDescriptor
Do Set-Acl
można potokować obiekt ACL lub deskryptor zabezpieczeń.
Outputs
FileSecurity
Domyślnie Set-Acl
nie generuje żadnych danych wyjściowych. Jednakże, jeśli użyjesz parametru Passthru, wygeneruje on obiekt bezpieczeństwa. Typ obiektu zabezpieczeń zależy od typu elementu.
Wskazówki
Ten cmdlet jest dostępny tylko na platformach Windows.
Ccmdlet Set-Acl
jest obsługiwany przez system plików PowerShell i dostawców rejestru. W związku z tym można go używać do zmiany deskryptorów zabezpieczeń plików, katalogów i kluczy rejestru.
- Get-Acl
- FileSystemAccessRule
- ObjectSecurity.SetAccessRuleProtection
- FileSystemRights
.