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, w celu dopasowania wartości w deskryptorze zabezpieczeń, który podajesz.
Aby użyć Set-Acl
polecenia , 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 deskryptora 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ń plików Dog.txt i 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 w liście ACL Cat.txt na wartości w pliku $DogACL
.
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żyj operatora potoku, aby przekazać deskryptor
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 wyjątkiem tego, ż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
metody , aby zastosować deskryptor zabezpieczeń Dog.txt do Cat.txt.
Po zakończeniu wykonywania polecenia listy ACL plików Dog.txt i 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 w celu pobrania wszystkich plików tekstowych w C:\Temp
katalogu. Parametr Recurse rozszerza polecenie na wszystkie podkatalogi .C:\temp
Parametr Include ogranicza pliki pobrane do tych z .txt
rozszerzeniem nazwy pliku. Parametr Force pobiera ukryte pliki, które w przeciwnym razie byłyby wykluczone. (Nie można użyć c:\temp\*.txt
parametru , 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 są tworzone zmienne, aby przekonwertować dziedziczone reguły dostępu na jawne reguły dostępu. Aby chronić reguły dostępu skojarzone z tym przed dziedziczeniem, ustaw zmienną $isProtected
na $true
. Aby zezwolić na dziedziczenie, ustaw wartość $isProtected
$false
. Aby uzyskać więcej informacji, zobacz Ustawianie ochrony reguł 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
metody , aby zastosować deskryptor zabezpieczeń do Dog.txt. Po zakończeniu wykonywania polecenia listy ACL Dog.txt dziedziczone z folderu Zwierzęta zostaną zastosowane bezpośrednio do Dog.txt, a nowe zasady dostępu dodane do aplikacji Zwierzęta 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\Administratorzy 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\Administratorzy pełnej kontroli nad plikiem Dog.txt. Zmienna $identity
ustawiona 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" określa, czy zezwalać na operację, czy odmawiać jej. Zmienna $fileSystemAccessRuleArgumentList
to lista 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
metody , aby zastosować deskryptor zabezpieczeń do Dog.txt. Po zakończeniu wykonywania polecenia grupa BUILTIN\Administratorzy 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 pasować do wartości w określonym obiekcie zabezpieczeń.
Dane wyjściowe Get-Acl
polecenia można zapisać w zmiennej, a następnie użyć parametru AclObject do przekazania zmiennej Get-Acl
lub wpisać polecenie.
Type: | Object |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ClearCentralAccessPolicy
Usuwa centralne zasady dostępu z określonego elementu.
Począwszy od Windows Server 2012, administratorzy mogą używać usługi Active Directory i zasady grupy do ustawiania centralnych zasad dostępu dla użytkowników i grup. Aby uzyskać więcej informacji, zobacz Dynamiczne Access Control: Omówienie scenariusza.
Ten parametr został wprowadzony w Windows PowerShell 3.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-InputObject
Zmienia deskryptor zabezpieczeń określonego obiektu. Wprowadź zmienną zawierającą obiekt lub polecenie, które pobiera obiekt.
Nie można przekazać potoku obiektu do zmiany na Set-Acl
. Zamiast tego użyj parametru InputObject jawnie w poleceniu .
Ten parametr został wprowadzony w Windows PowerShell 3.0.
Type: | PSObject |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | 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 je ująć w pojedynczy cudzysłów ('
).
Znaki pojedynczego cudzysłowu informują program PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki.
Ten parametr został wprowadzony w Windows PowerShell 3.0.
Type: | String[] |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Passthru
Zwraca obiekt reprezentujący deskryptor zabezpieczeń, który został zmieniony. Domyślnie to polecenie cmdlet nie generuje żadnego wyniku.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 przekazujesz obiekt zabezpieczeń do Set-Acl
(przy użyciu parametrów AclObject lub SecurityDescriptor lub przekazując obiekt zabezpieczeń z Get-Acl do Set-Acl
), a pominiesz parametr Path (nazwa i wartość), Set-Acl
użyje ścieżki uwzględnionej w obiekcie zabezpieczeń.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-WhatIf
Pokazuje, co się stanie po uruchomieniu polecenia cmdlet. Polecenie cmdlet nie zostało uruchomione.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Dane wejściowe
System.Security.AccessControl.ObjectSecurity, System.Security.AccessControl.CommonSecurityDescriptor
Do obiektu listy ACL lub deskryptora zabezpieczeń można przekazać potok .Set-Acl
Dane wyjściowe
Domyślnie Set-Acl
nie generuje żadnych danych wyjściowych. Jeśli jednak używasz parametru Passthru , generuje obiekt zabezpieczeń. Typ obiektu zabezpieczeń zależy od typu elementu.
Uwagi
To polecenie cmdlet jest dostępne tylko na platformach systemu 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.