Set-Acl
Dosya veya kayıt defteri anahtarı gibi belirtilen 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>]
Description
Bu cmdlet yalnızca Windows platformunda kullanılabilir.
Set-Acl
Cmdlet, dosya veya kayıt defteri anahtarı gibi belirli bir öğenin güvenlik tanımlayıcısını, sağladığınız bir güvenlik tanımlayıcısı içindeki değerlerle eşleşecek şekilde değiştirir.
kullanmak Set-Acl
için Path veya InputObject parametresini kullanarak güvenlik tanımlayıcısını değiştirmek istediğiniz öğeyi belirleyin. Ardından, uygulamak istediğiniz değerlere sahip 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ı içindeki değerleri AclObject parametresindeki değerlerle eşleşecek şekilde değiştirir.
Örnekler
Örnek 1: Bir dosyadan diğerine güvenlik tanımlayıcısı kopyalama
$DogACL = Get-Acl -Path "C:\Dog.txt"
Set-Acl -Path "C:\Cat.txt" -AclObject $DogACL
Bu komutlar, Dog.txt dosyasının güvenlik tanımlayıcısından Cat.txt dosyasının güvenlik tanımlayıcısına değerleri 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 cmdlet'ini kullanır Get-Acl
.
Atama işleci (=
), güvenlik tanımlayıcısını $DogACL değişkeninin değerinde depolar.
İkinci komut, Cat.txt ACL'sindeki değerleri içindeki $DogACL
değerlerle değiştirmek için kullanırSet-Acl
.
Path parametresinin değeri, Cat.txt dosyasının yoludur. AclObject parametresinin değeri, model ACL'leridir ve bu örnekte değişkene kaydedilen Dog.txt ACL'leridir$DogACL
.
Örnek 2: Tanımlayıcı geçirmek için işlem hattı işlecini kullanma
Get-Acl -Path "C:\Dog.txt" | Set-Acl -Path "C:\Cat.txt"
Bu komut, bir komuttan Get-Acl
komuta güvenlik tanımlayıcısı göndermek için bir işlem hattı işleci (|
) kullanması dışında, önceki örnekteki komutla neredeyse aynıdırSet-Acl
.
İlk komut, Dog.txt dosyasının güvenlik tanımlayıcısını almak için cmdlet'ini kullanır Get-Acl
. İşlem hattı işleci (|
), cmdlet'ine Dog.txt güvenlik tanımlayıcısını Set-Acl
temsil eden bir nesne geçirir.
İkinci komut, Dog.txt güvenlik tanımlayıcısını Cat.txt uygulamak için kullanır Set-Acl
.
Komut tamamlandığında, Dog.txt ve Cat.txt dosyalarının ACL'leri aynıdır.
Örnek 3: Birden çok 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 $NewAcl
Bu komutlar, File0.txt dosyasındaki güvenlik tanımlayıcılarını dizindeki C:\Temp
tüm metin dosyalarına ve tüm alt dizinlerine uygular.
İlk komut, geçerli dizindeki File0.txt dosyasının güvenlik tanımlayıcısını alır ve atama işlecini (=
) kullanarak bunu değişkende $NewACL
depolar.
İşlem hattındaki ilk komut, dizindeki tüm metin dosyalarını almak için Get-ChildItem cmdlet'ini C:\Temp
kullanır. Recurse parametresi komutunu tüm alt dizinlerine C:\temp
genişletir. Include parametresi, alınan dosyaları dosya adı uzantısına .txt
sahip dosyalarla sınırlar. Force parametresi gizli dosyaları alır, aksi takdirde dışlanır. (Recurse parametresi dosyalarda değil dizinlerde çalıştığından öğesini kullanamazsınızc:\temp\*.txt
.)
İşlem hattı işleci (|
), alınan dosyaları temsil eden nesneleri cmdlet'ine Set-Acl
gönderir ve bu da AclObject parametresindeki güvenlik tanımlayıcısını işlem hattındaki tüm dosyalara uygular.
Uygulamada, birden fazla öğeyi etkileyebilecek tüm Set-Acl
komutlarla WhatIf parametresini kullanmak en iyisidir. Bu durumda işlem hattındaki ikinci komut olacaktır Set-Acl -AclObject $NewAcl -WhatIf
. Bu komut, komuttan etkilenecek dosyaları listeler. Sonucu gözden geçirdikten sonra, WhatIf parametresi olmadan komutu yeniden çalıştırabilirsiniz.
Örnek 4: Devralmayı devre dışı bırakma ve devralınan erişim kurallarını koruma
$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
Bu komutlar, var olan 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 cmdlet'ini kullanır Get-Acl
.
Ardından, 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ı devralmadan korumak için değişkenini $isProtected
olarak $true
ayarlayın. Devralmaya izin vermek için olarak $false
ayarlayın$isProtected
. Daha fazla bilgi için bkz . Erişim kuralı korumasını ayarlama.
Devralınan $preserveInheritance
erişim kurallarını korumak veya $false
devralınan erişim kurallarını kaldırmak için değişkenini $true
olarak ayarlayın. Ardından erişim kuralı koruması, SetAccessRuleProtection() yöntemi kullanılarak güncelleştirilir.
Son komut, güvenlik tanımlayıcısını Dog.txt uygulamak için kullanır Set-Acl
. Komut tamamlandığında, Evcil Hayvanlar klasöründen devralınan Dog.txt ACL'leri doğrudan Dog.txt uygulanır ve Evcil Hayvanlar'a eklenen yeni erişim ilkeleri Dog.txt erişimini değiştirmez.
Ö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 $NewAcl
Bu komut BUILTIN\Administrators grubuna Dog.txt dosyasının tam denetimini verir.
İlk komut, Dog.txt dosyasının güvenlik tanımlayıcısını almak için cmdlet'ini kullanır Get-Acl
.
BuiltIN\Administrators grubuna Dog.txt dosyasının tam denetimini vermek için sonraki değişkenler oluşturulur. Değişken $identity
, kullanıcı hesabının adına ayarlanır. $fileSystemRights
Değişken FullControl olarak ayarlanır ve erişim kuralıyla ilişkili işlem türünü belirten FileSystemRights değerlerinden herhangi biri olabilir. " $type
İzin Ver" olarak ayarlanan değişken, işleme izin verilip verilmeyeceğini belirtir. Değişken $fileSystemAccessRuleArgumentList
, yeni FileSystemAccessRule nesnesi oluşturulurken geçirilecek bir bağımsız değişken listesidir. Ardından yeni bir FileSystemAccessRule nesnesi oluşturulur ve FileSystemAccessRule nesnesi SetAccessRule() yöntemine geçirilir ve yeni erişim kuralını ekler.
Son komut, güvenlik tanımlayıcısını Dog.txt uygulamak için kullanır Set-Acl
. Komut tamamlandığında BUILTIN \Administrators grubu Dog.txt tam denetime sahip olur.
Parametreler
-AclObject
İstenen özellik değerlerine sahip bir ACL 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.
Bir Get-Acl
komutun çıkışını bir değişkene kaydedebilir ve ardından değişkeni geçirmek için AclObject parametresini kullanabilir veya bir Get-Acl
komut yazabilirsiniz.
Tür: | Object |
Position: | 1 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-ClearCentralAccessPolicy
Merkezi erişim ilkesini belirtilen öğeden kaldırır.
Windows Server 2012'de yöneticiler, kullanıcılar ve gruplar için merkezi erişim ilkeleri ayarlamak için 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ıma sunulmuştur.
Tür: | SwitchParameter |
Position: | Named |
Default value: | False |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-Confirm
Cmdlet'i çalıştırmadan önce sizden onay ister.
Tür: | SwitchParameter |
Diğer adlar: | cf |
Position: | Named |
Default value: | False |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-Exclude
Belirtilen öğeleri atlar. Bu parametrenin değeri Path parametresini niteler. gibi *.txt
bir yol öğesi veya deseni girin. Joker karakterlere izin verilir.
Tür: | String[] |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | True |
-Filter
Sağlayıcının biçiminde veya dilinde bir filtre belirtir. Bu parametrenin değeri Path parametresini niteler. Joker karakterlerin kullanımı da dahil olmak üzere filtrenin söz dizimi sağlayıcıya bağlıdır. Sağlayıcı, nesneleri aldıktan sonra PowerShell'in filtrelemesini yapmak yerine nesneleri alırken bunları uyguladığından filtreler diğer parametrelerden daha verimlidir.
Tür: | String |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | True |
-Include
Yalnızca belirtilen öğeleri değiştirir. Bu parametrenin değeri Path parametresini niteler.
gibi *.txt
bir yol öğesi veya deseni girin. Joker karakterlere izin verilir.
Tür: | String[] |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | 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.
olarak değiştirilecek Set-Acl
nesneyi kanala alamazsınız. Bunun yerine, komutunda InputObject parametresini açıkça kullanın.
Bu parametre Windows PowerShell 3.0'da kullanıma sunulmuştur.
Tür: | PSObject |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-LiteralPath
Belirtilen öğenin güvenlik tanımlayıcısını değiştirir. Path'in aksine, LiteralPath parametresinin değeri tam olarak yazıldığı gibi kullanılır. Hiçbir karakter joker karakter olarak yorumlanmamıştır. Yol kaçış karakterleri içeriyorsa, tek tırnak işareti ('
içine alın).
Tek tırnak işaretleri PowerShell'e hiçbir karakteri kaçış dizisi olarak yorumlamaması gerektiğini söyler.
Bu parametre Windows PowerShell 3.0'da kullanıma sunulmuştur.
Tür: | String[] |
Diğer adlar: | PSPath |
Position: | Named |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-Passthru
Değiştirilen güvenlik tanımlayıcısını temsil eden bir nesne döndürür. Varsayılan olarak, bu cmdlet herhangi bir çıkış oluşturmaz.
Tür: | SwitchParameter |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-Path
Belirtilen öğenin güvenlik tanımlayıcısını değiştirir. Dosya veya kayıt defteri anahtarı yolu gibi bir öğenin yolunu girin. Joker karakterlere izin verilir.
'a Set-Acl
bir güvenlik nesnesi geçirirseniz (AclObject veya SecurityDescriptor parametrelerini kullanarak veya Get-Acl'den Set-Acl
bir güvenlik nesnesi geçirerek ) ve Path parametresini (ad ve değer) atlarsanız, Set-Acl
güvenlik nesnesine dahil edilen yolu kullanır.
Tür: | String[] |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | True |
-WhatIf
Cmdlet çalıştırılıyorsa ne olacağını gösterir. Cmdlet çalıştırılmaz.
Tür: | SwitchParameter |
Diğer adlar: | wi |
Position: | Named |
Default value: | False |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
Girişler
Bir ACL nesnesini bu cmdlet'e yöneltebilirsiniz.
Bu cmdlet'e bir güvenlik tanımlayıcısı yöneltebilirsiniz.
Çıkışlar
None
Varsayılan olarak, bu cmdlet çıkış döndürmez.
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, PowerShell dosya sistemi ve kayıt defteri sağlayıcıları tarafından desteklenir. Bu nedenle, dosyaları, dizinleri ve kayıt defteri anahtarlarının güvenlik tanımlayıcılarını değiştirmek için bunu kullanabilirsiniz.
İlişkili Bağlantılar
PowerShell