Set-Acl (Microsoft.PowerShell.Security)
Set-Acl
- Modül:
- Microsoft.PowerShell.Security
Dosya veya kayıt defteri anahtarı gibi belirli bir öğenin güvenlik tanımlayıcısını değiştirir.
Sözdizimi
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>]Tanım
Bu cmdlet yalnızca Windows platformunda mevcuttur.
Set-Acl cmdlet'i, dosya veya kayıt defteri anahtarı gibi belirli bir öğenin güvenlik tanımlayıcısını, sağladığınız güvenlik tanımlayıcısındaki değerlerle eşleşecek şekilde değiştirir.
Set-Acl'yi kullanmak için, güvenlik tanımlayıcısını değiştirmek istediğiniz öğeyi tanımlamak üzere Path veya InputObject parametresini kullanın. Ardından, uygulamak istediğiniz değerleri içeren bir güvenlik tanımlayıcısı sağlamak için AclObject veya SecurityDescriptor parametrelerini kullanın. Set-Acl sağlanan güvenlik tanımlayıcısını uygular. Model olarak AclObject parametresinin değerini kullanır ve öğenin güvenlik tanımlayıcısındaki değerleri AclObject parametresindeki değerlerle eşleşecek şekilde değiştirir.
Örnekler
Örnek 1: Güvenlik tanımlayıcısını bir dosyadan diğerine kopyalama
$DogACL = Get-Acl -Path "C:\Dog.txt"
Set-Acl -Path "C:\Cat.txt" -AclObject $DogACLBu komutlar, değerleri Dog.txt dosyasının güvenlik tanımlayıcısından Cat.txt dosyasının güvenlik tanımlayıcısına kopyalar. Komutlar tamamlandığında Dog.txt ve Cat.txt dosyalarının güvenlik tanımlayıcıları aynıdır.
İlk komut, Dog.txt dosyasının güvenlik tanımlayıcısını almak için Get-Acl cmdlet'ini kullanır. Atama operatörü (=), güvenlik tanımlayıcısını $DogACL değişkeninin değerinde saklar.
İkinci komut, Cat.txt'nin ACL'sindeki değerleri $DogACL'deki değerlerle değiştirmek için Set-Acl'i kullanır.
Path parametresinin değeri Cat.txt dosyasının yoludur. AclObject parametresinin değeri model ACL'dir; bu durumda, $DogACL değişkenine kaydedilen Dog.txt ACL'sidir.
Örnek 2: Bir tanımlayıcıyı iletmek için ardışık düzen operatörünü kullanın
Get-Acl -Path "C:\Dog.txt" | Set-Acl -Path "C:\Cat.txt"Bu komut, bir Get-Acl komutundan güvenlik tanımlayıcısını göndermek için bir ardışık düzen operatörünü (|) kullanması dışında önceki örnekteki komutla hemen hemen aynıdır. Set-Acl komutu.
İlk komut, Dog.txt dosyasının güvenlik tanımlayıcısını almak için Get-Acl cmdlet'ini kullanır. İşlem hattı operatörü (|), Dog.txt güvenlik tanımlayıcısını temsil eden bir nesneyi Set-Acl cmdlet'ine iletir.
İkinci komut, Dog.txt'nin güvenlik tanımlayıcısını Cat.txt'ye uygulamak için Set-Acl'i kullanır. Komut tamamlandığında Dog.txt ve Cat.txt dosyalarının ACL'leri aynıdır.
Örnek 3: Birden fazla dosyaya güvenlik tanımlayıcısı uygulama
$NewAcl = Get-Acl File0.txt
Get-ChildItem -Path "C:\temp" -Recurse -Include "*.txt" -Force | Set-Acl -AclObject $NewAclBu komutlar, File0.txt dosyasındaki güvenlik tanımlayıcılarını C:\Temp dizinindeki ve onun tüm alt dizinlerindeki tüm metin dosyalarına uygular.
İlk komut, geçerli dizindeki File0.txt dosyasının güvenlik tanımlayıcısını alır ve bunu $NewACL değişkeninde depolamak için atama operatörünü (=) kullanır.
İşlem hattındaki ilk komut, C:\Temp dizinindeki tüm metin dosyalarını almak için Get-ChildItem cmdlet'ini kullanır. Recurse parametresi, komutu C:\temp'in tüm alt dizinlerine genişletir. Dahil et parametresi, alınan dosyaları .txt dosya adı uzantısına sahip olanlarla sınırlar. Force parametresi, aksi takdirde hariç tutulacak olan gizli dosyaları alır. (Recurse parametresi dosyalarda değil dizinlerde çalıştığı için c:\temp\*.txt kullanamazsınız.)
İşlem hattı operatörü (|), alınan dosyaları temsil eden nesneleri AclObject parametresindeki güvenlik tanımlayıcısını uygulayan Set-Acl cmdlet'ine gönderir. ardışık düzendeki tüm dosyalara.
Uygulamada, birden fazla öğeyi etkileyebilecek tüm Set-Acl komutlarıyla WhatIf parametresini kullanmak en iyisidir. Bu durumda ardışık düzendeki ikinci komut Set-Acl -AclObject $NewAcl -WhatIf olacaktır. Bu komut, komuttan etkilenecek dosyaları listeler. Sonucu inceledikten sonra WhatIf parametresi olmadan komutu tekrar çalıştırabilirsiniz.
Örnek 4: Devralmayı devre dışı bırakın ve devralınan erişim kurallarını koruyun
$NewAcl = Get-Acl -Path "C:\Pets\Dog.txt"
$isProtected = $true
$preserveInheritance = $true
$NewAcl.SetAccessRuleProtection($isProtected, $preserveInheritance)
Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $NewAclBu komutlar, mevcut devralınan erişim kurallarını korurken, üst klasörlerden erişim devralmayı devre dışı bırakır.
İlk komut, Dog.txt dosyasının güvenlik tanımlayıcısını almak için Get-Acl cmdlet'ini kullanır.
Daha sonra, devralınan erişim kurallarını açık erişim kurallarına dönüştürmek için değişkenler oluşturulur. Bununla ilişkili erişim kurallarını devralmaya karşı korumak için $isProtected değişkenini $true olarak ayarlayın. Mirasa izin vermek için $isProtected'ı $false olarak ayarlayın. Daha fazla bilgi için bkz. erişim kuralı korumasını ayarlama.
Devralınan erişim kurallarını korumak için $preserveInheritance değişkenini $true olarak veya devralınan erişim kurallarını kaldırmak için $false olarak ayarlayın. Daha sonra erişim kuralı koruması SetAccessRuleProtection() yöntemi kullanılarak güncellenir.
Son komut, güvenlik tanımlayıcısını Dog.txt'ye uygulamak için Set-Acl'i kullanır. Komut tamamlandığında, Pets klasöründen devralınan Dog.txt ACL'leri doğrudan Dog.txt'ye uygulanacak ve Pets'e eklenen yeni erişim politikaları Dog.txt'ye erişimi değiştirmeyecektir.
Örnek 5: Yöneticilere dosyanın Tam Denetimini Verme
$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 $NewAclBu komut, BUILTIN\Administrators grubuna Dog.txt dosyasının tam kontrolünü verecektir.
İlk komut, Dog.txt dosyasının güvenlik tanımlayıcısını almak için Get-Acl cmdlet'ini kullanır.
Sonraki değişkenler, BUILTIN\Administrators grubuna Dog.txt dosyasının tam kontrolünü vermek için oluşturulur. $identity değişkeni bir kullanıcı hesabının adına ayarlandı. $fileSystemRights değişkeni FullControl olarak ayarlanmıştır ve erişim kuralıyla ilişkili işlem türünü belirten FileSystemRights değerlerinden herhangi biri olabilir. İşleme izin verilip verilmeyeceğini belirtmek için $type değişkeni "İzin Ver" olarak ayarlandı. $fileSystemAccessRuleArgumentList değişkeni, yeni FileSystemAccessRule nesnesi oluşturulurken iletilecek bir bağımsız değişken listesidir. Daha sonra yeni bir FileSystemAccessRule nesnesi oluşturulur ve FileSystemAccessRule nesnesi SetAccessRule() yöntemine iletilir ve yeni erişim kuralı eklenir.
Son komut, güvenlik tanımlayıcısını Dog.txt'ye uygulamak için Set-Acl'i kullanır. Komut tamamlandığında BUILTIN\Administrators grubu Dog.txt dosyasının tam denetimine sahip olacaktır.
Parametreler
-AclObject
İstenilen özellik değerlerine sahip bir ACL'yi belirtir. Set-Acl, Path veya InputObject parametresi tarafından belirtilen öğenin ACL'sini, belirtilen güvenlik nesnesindeki değerlerle eşleşecek şekilde değiştirir.
Get-Acl komutunun çıktısını bir değişkene kaydedebilir ve ardından değişkeni iletmek için AclObject parametresini kullanabilir veya bir Get-Acl yazabilirsiniz. kod > komut.
- Tip :
Nesne
- Konum:
1
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
False
-ClearCentralAccessPolicy
Belirtilen öğeden merkezi erişim ilkesini kaldırır.
Windows Server 2012'den itibaren yöneticiler, kullanıcılar ve gruplar için merkezi erişim ilkeleri ayarlamak amacıyla Active Directory ve Grup İlkesi'ni kullanabilir. Daha fazla bilgi için bkz. Dinamik Erişim Denetimi: Senaryoya Genel Bakış.
Bu parametre Windows PowerShell 3,0'da kullanılmaya başlandı.
- Tip :
SwitchParameter
- Konum:
Adlandırılmış
- Varsayılan değer:
False
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-Confirm
Cmdlet'i çalıştırmadan önce sizden onay ister.
- Tip :
SwitchParameter
- Takma adlar:
cf
- Konum:
Adlandırılmış
- Varsayılan değer:
False
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-Exclude
Belirtilen öğeleri atlar. Bu parametrenin değeri Yol parametresini nitelendirir. *.txt gibi bir yol öğesi veya modeli girin. Joker karakterlere izin verilir.
- Tip :
String[]
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
True
-Filter
Sağlayıcının biçiminde veya dilinde bir filtre belirtir. Bu parametrenin değeri Yol parametresini nitelendirir. Joker karakterlerin kullanımı da dahil olmak üzere filtrenin sözdizimi sağlayıcıya bağlıdır. Filtreler diğer parametrelerden daha etkilidir çünkü sağlayıcı, PowerShell'in nesneleri alındıktan sonra filtrelemesini sağlamak yerine bunları nesneleri alırken uygular.
- Tip :
String
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
True
-Include
Yalnızca belirtilen öğeleri değiştirir. Bu parametrenin değeri Yol parametresini nitelendirir. *.txt gibi bir yol öğesi veya modeli girin. Joker karakterlere izin verilir.
- Tip :
String[]
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
True
-InputObject
Belirtilen nesnenin güvenlik tanımlayıcısını değiştirir. Nesneyi içeren bir değişken veya nesneyi alan bir komut girin.
Değiştirilecek nesneyi Set-Acl olarak yönlendiremezsiniz. Bunun yerine, komutta açıkça InputObject parametresini kullanın.
Bu parametre Windows PowerShell 3,0'da kullanılmaya başlandı.
- Tip :
PSObject
- Konum:
0
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
False
-LiteralPath
Belirtilen öğenin güvenlik tanımlayıcısını değiştirir. Path'ten farklı olarak LiteralPath parametresinin değeri tam olarak yazıldığı gibi kullanılır. Hiçbir karakter joker karakter olarak yorumlanmaz. Yol kaçış karakterleri içeriyorsa, onu tek tırnak işaretleri (') içine alın. Tek tırnak işaretleri PowerShell'e hiçbir karakteri kaçış dizisi olarak yorumlamamasını söyler.
Bu parametre Windows PowerShell 3,0'da kullanılmaya başlandı.
- Tip :
String[]
- Takma adlar:
PSPath
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
False
-Passthru
Değiştirilen güvenlik tanımlayıcısını temsil eden bir nesneyi döndürür. Varsayılan olarak bu cmdlet herhangi bir çıktı oluşturmaz.
- Tip :
SwitchParameter
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-Path
Belirtilen öğenin güvenlik tanımlayıcısını değiştirir. Bir dosyanın veya kayıt defteri anahtarının yolu gibi bir öğenin yolunu girin. Joker karakterlere izin verilir.
Set-Acl'e bir güvenlik nesnesi iletirseniz (AclObject veya SecurityDescriptor parametrelerini kullanarak ya da Get-Acl'den bir güvenlik nesnesi ileterek) Set-Acl'e) ve Path parametresini (ad ve değer) atlarsanız, Set-Acl, dosyada yer alan yolu kullanır. güvenlik nesnesi.
- Tip :
String[]
- Konum:
0
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
True
-WhatIf
Cmdlet çalıştırılırsa ne olacağını gösterir. Cmdlet çalıştırılmıyor.
- Tip :
SwitchParameter
- Takma adlar:
wi
- Konum:
Adlandırılmış
- Varsayılan değer:
False
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
Girişler
ObjectSecurity
Bir ACL nesnesini bu cmdlet'e yönlendirebilirsiniz.
CommonSecurityDescriptor
Bu cmdlet'e bir güvenlik tanımlayıcısını yönlendirebilirsiniz.
Çıkışlar
Yok
Varsayılan olarak bu cmdlet hiçbir çıktı döndürmez.
Dosya Güvenliği
PassThru parametresini kullandığınızda bu cmdlet bir güvenlik nesnesi döndürür. Güvenlik nesnesinin türü, öğenin türüne bağlıdır.
Notlar
Bu cmdlet yalnızca Windows platformlarında kullanılabilir.
Set-Acl cmdlet'i PowerShell dosya sistemi ve kayıt defteri sağlayıcıları tarafından desteklenir. Bu nedenle dosyaların, dizinlerin ve kayıt defteri anahtarlarının güvenlik tanımlayıcılarını değiştirmek için kullanabilirsiniz.