Set-Acl
Zmienia deskryptor zabezpieczeń określonego elementu, na przykład plik lub klucz rejestru.
Składnia
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>]
Opis
To polecenie cmdlet jest dostępne tylko na platformie Windows.
Polecenie Set-Acl
cmdlet zmienia deskryptor zabezpieczeń określonego elementu, takiego jak plik lub klucz rejestru, tak aby odpowiadał wartościom w podanym deskryptorze zabezpieczeń.
Aby użyć Set-Acl
parametru , użyj parametru Path lub InputObject , aby zidentyfikować element, którego deskryptor zabezpieczeń chcesz zmienić. Następnie użyj parametrów AclObject lub SecurityDescriptor, aby podać deskryptor zabezpieczeń zawierający wartości, które chcesz zastosować. Set-Acl
stosuje deskryptor zabezpieczeń, który jest dostarczany. Używa wartości parametru AclObject jako modelu i zmienia wartości w deskryptorze zabezpieczeń elementu w celu dopasowania wartości w parametrze AclObject .
Przykłady
Przykład 1. Kopiowanie deskryptora zabezpieczeń z jednego pliku do innego
$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 zakończeniu wykonywania poleceń deskryptory zabezpieczeń Dog.txt i plików Cat.txt są identyczne.
Pierwsze polecenie używa Get-Acl
polecenia cmdlet do pobrania deskryptora zabezpieczeń pliku Dog.txt.
Operator przypisania (=
) przechowuje deskryptor zabezpieczeń w wartości zmiennej $DogACL.
Drugie polecenie używa Set-Acl
metody , aby zmienić wartości na liście ACL Cat.txt na wartości w $DogACL
pliku .
Wartość parametru Path to ścieżka do pliku Cat.txt. Wartość parametru AclObject to lista ACL modelu, w tym przypadku lista ACL Dog.txt zapisana w zmiennej $DogACL
.
Przykład 2. Używanie operatora potoku do przekazywania 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 tą różnicą, że używa operatora potoku (|
) do wysyłania deskryptora zabezpieczeń z Get-Acl
polecenia do Set-Acl
polecenia.
Pierwsze polecenie używa Get-Acl
polecenia cmdlet do pobrania deskryptora zabezpieczeń pliku Dog.txt. Operator potoku (|
) przekazuje obiekt reprezentujący deskryptor zabezpieczeń Dog.txt do Set-Acl
polecenia cmdlet .
Drugie polecenie używa Set-Acl
polecenia , aby zastosować deskryptor zabezpieczeń Dog.txt do Cat.txt.
Po zakończeniu działania polecenia listy ACL Dog.txt i plików Cat.txt są identyczne.
Przykład 3. Stosowanie deskryptora zabezpieczeń do wielu plików
$NewAcl = Get-Acl File0.txt
Get-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 C:\Temp
katalogu i wszystkich jego podkatalogach.
Pierwsze polecenie pobiera deskryptor zabezpieczeń pliku File0.txt w bieżącym katalogu i używa operatora przypisania (=
) do przechowywania go w zmiennej $NewACL
.
Pierwsze polecenie w potoku używa polecenia cmdlet Get-ChildItem, aby pobrać wszystkie pliki tekstowe w C:\Temp
katalogu. Parametr Recurse rozszerza polecenie na wszystkie podkatalogi .C:\temp
Parametr Include ogranicza pliki pobrane do plików z .txt
rozszerzeniem nazwy pliku. Parametr Force pobiera ukryte pliki, które w przeciwnym razie zostaną wykluczone. (Nie można użyć parametru c:\temp\*.txt
, ponieważ parametr Recurse działa w katalogach, a nie w plikach).
Operator potoku (|
) wysyła obiekty reprezentujące pobrane pliki do Set-Acl
polecenia cmdlet, które stosuje deskryptor zabezpieczeń w parametrze AclObject do wszystkich plików w potoku.
W praktyce najlepiej użyć parametru WhatIf ze wszystkimi Set-Acl
poleceniami, które mogą mieć wpływ na więcej niż jeden element. W takim przypadku drugim poleceniem w potoku będzie Set-Acl -AclObject $NewAcl -WhatIf
. To polecenie wyświetla listę plików, których dotyczy polecenie . Po przejrzeniu wyniku możesz ponownie uruchomić polecenie bez parametru WhatIf .
Przykład 4. Wyłączanie dziedziczenia i zachowywanie 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łączają dziedziczenie dostępu z folderów nadrzędnych, zachowując jednocześnie istniejące dziedziczone reguły dostępu.
Pierwsze polecenie używa Get-Acl
polecenia cmdlet do pobrania deskryptora zabezpieczeń pliku Dog.txt.
Następnie tworzone są zmienne, aby przekonwertować dziedziczone reguły dostępu na jawne reguły dostępu. Aby chronić reguły dostępu skojarzone z tym elementem przed dziedziczeniem, ustaw zmienną $isProtected
na $true
. Aby zezwolić na dziedziczenie, ustaw wartość $isProtected
$false
. Aby uzyskać więcej informacji, zobacz Ustawianie ochrony reguły dostępu.
Ustaw zmienną $preserveInheritance
na wartość , aby $true
zachować dziedziczone reguły dostępu lub $false
usunąć dziedziczone reguły dostępu. Następnie ochrona reguł dostępu jest aktualizowana przy użyciu metody SetAccessRuleProtection().
Ostatnie polecenie używa Set-Acl
polecenia do zastosowania deskryptora zabezpieczeń do Dog.txt. Po zakończeniu polecenia listy ACL Dog.txt, które zostały odziedziczone z folderu Pets, zostaną zastosowane bezpośrednio do Dog.txt, a nowe zasady dostępu dodane do zwierząt domowych nie zmienią dostępu do Dog.txt.
Przykład 5. Udzielanie 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 używa Get-Acl
polecenia cmdlet do pobrania deskryptora zabezpieczeń pliku Dog.txt.
Następne zmienne są tworzone w celu udzielenia grupie BUILTIN\Administrators pełnej kontroli nad plikiem Dog.txt. Zmienna ustawiona $identity
na nazwę konta użytkownika. Zmienna ustawiona $fileSystemRights
na FullControl i może być dowolną z wartości FileSystemRights , która określa typ operacji skojarzonej z regułą dostępu. Zmienna ustawiona $type
na wartość "Zezwalaj", aby określić, czy zezwalać na operację, czy odmawiać jej. Zmienna $fileSystemAccessRuleArgumentList
jest listą argumentów, która ma zostać przekazana podczas tworzenia nowego obiektu FileSystemAccessRule . Następnie zostanie utworzony nowy obiekt FileSystemAccessRule , a obiekt FileSystemAccessRule jest przekazywany do metody SetAccessRule(), dodaje nową regułę dostępu.
Ostatnie polecenie używa Set-Acl
polecenia do zastosowania deskryptora zabezpieczeń do Dog.txt. Po zakończeniu wykonywania polecenia grupa BUILTIN\Administrators będzie miała pełną kontrolę nad Dog.txt.
Parametry
-AclObject
Określa listę ACL z żądanymi wartościami właściwości. Set-Acl
Zmienia listę ACL elementu określonego przez parametr Path lub InputObject , aby dopasować je do wartości w określonym obiekcie zabezpieczeń.
Możesz zapisać dane wyjściowe Get-Acl
polecenia w zmiennej, a następnie użyć parametru AclObject do przekazania zmiennej lub wpisać Get-Acl
polecenie.
Typ: | Object |
Position: | 1 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-ClearCentralAccessPolicy
Usuwa centralne zasady 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, zobacz Dynamic Access Control: Scenario Overview (Dynamiczna kontrola dostępu: omówienie scenariusza).
Ten parametr został wprowadzony w programie Windows PowerShell 3.0.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Confirm
Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.
Typ: | SwitchParameter |
Aliasy: | cf |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Exclude
Pomija określone elementy. Wartość tego parametru kwalifikuje parametr Path . Wprowadź element ścieżki lub wzorzec, taki jak *.txt
. Dozwolone są symbole wieloznaczne.
Typ: | String[] |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | True |
-Filter
Określa filtr w formacie lub języku dostawcy. Wartość tego parametru kwalifikuje parametr Path . 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, zamiast filtrować obiekty programu PowerShell po ich pobraniu.
Typ: | String |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | True |
-Include
Zmienia tylko określone elementy. Wartość tego parametru kwalifikuje parametr Path .
Wprowadź element ścieżki lub wzorzec, taki jak *.txt
. Dozwolone są symbole wieloznaczne.
Typ: | String[] |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | True |
-InputObject
Zmienia deskryptor zabezpieczeń określonego obiektu. Wprowadź zmienną zawierającą obiekt lub polecenie, które pobiera obiekt.
Nie można przekazać do potoku obiektu, który ma zostać zmieniony na Set-Acl
. Zamiast tego użyj parametru InputObject jawnie w poleceniu .
Ten parametr został wprowadzony w programie Windows PowerShell 3.0.
Typ: | PSObject |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-LiteralPath
Zmienia deskryptor zabezpieczeń określonego elementu. W przeciwieństwie do ścieżki, wartość parametru LiteralPath jest używana dokładnie tak, jak jest typowana. Znaki nie są interpretowane jako symbole wieloznaczne. Jeśli ścieżka zawiera znaki ucieczki, należy ująć ją w znaki pojedynczego cudzysłowu ('
).
Pojedyncze znaki cudzysłowu informują program PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki.
Ten parametr został wprowadzony w programie Windows PowerShell 3.0.
Typ: | String[] |
Aliasy: | PSPath |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-PassThru
Zwraca obiekt reprezentujący deskryptor zabezpieczeń, który został zmieniony. Domyślnie to polecenie cmdlet nie generuje żadnych danych wyjściowych.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Path
Zmienia deskryptor zabezpieczeń określonego elementu. Wprowadź ścieżkę do elementu, na przykład ścieżkę do pliku lub klucza rejestru. Dozwolone są symbole wieloznaczne.
Jeśli przekażesz obiekt zabezpieczeń do Set-Acl
(przy użyciu parametrów AclObject lub SecurityDescriptor albo przekazując obiekt zabezpieczeń z get-Acl do Set-Acl
), a parametr Path (nazwa i wartość) zostanie pominięty, Set-Acl
użyje ścieżki uwzględnionej w obiekcie zabezpieczeń.
Typ: | String[] |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | True |
-WhatIf
Pokazuje, co się stanie po uruchomieniu polecenia cmdlet. Polecenie cmdlet nie zostało uruchomione.
Typ: | SwitchParameter |
Aliasy: | wi |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
Do tego polecenia cmdlet można przekazać obiekt listy ACL.
Do tego polecenia cmdlet można przekazać deskryptor zabezpieczeń.
Dane wyjściowe
None
Domyślnie to polecenie cmdlet nie zwraca żadnych danych wyjściowych.
Jeśli używasz parametru PassThru , to polecenie cmdlet zwraca obiekt zabezpieczeń. Typ obiektu zabezpieczeń zależy od typu elementu.
Uwagi
To polecenie cmdlet jest dostępne tylko na platformach windows.
Polecenie Set-Acl
cmdlet jest obsługiwane przez dostawców systemu plików programu PowerShell i rejestru. W związku z tym można go użyć do zmiany deskryptorów zabezpieczeń plików, katalogów i kluczy rejestru.