Udostępnij za pośrednictwem


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-Aclparametru , 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 $DogACLpliku .

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

ObjectSecurity

Do tego polecenia cmdlet można przekazać obiekt listy ACL.

CommonSecurityDescriptor

Do tego polecenia cmdlet można przekazać deskryptor zabezpieczeń.

Dane wyjściowe

None

Domyślnie to polecenie cmdlet nie zwraca żadnych danych wyjściowych.

FileSecurity

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.