Set-Acl

Dosya veya kayıt defteri anahtarı gibi belirtilen bir öğenin güvenlik tanımlayıcısını değiştirir.

Syntax

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-Acliç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ğ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ında bulunan 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 $DogACL

Bu 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 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 $DogACLdeğerlerle değiştirmek için kullanırSet-Acl.

Path parametresinin değeri, Cat.txt dosyasının yoludur. AclObject parametresinin değeri, ACL modelidir ve bu örnekte Dog.txt ACL değişkenine $DogACL kaydedilir.

Ö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ını göndermek için bir işlem hattı işleci (|) kullanması dışında, önceki örnekteki komutla Set-Acl neredeyse 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 . İş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 değişkeninde $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:\tempgeniş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 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, whatif parametresini birden fazla öğeyi etkileyebilecek tüm Set-Acl komutlarla kullanmak en iyisidir. Bu durumda, işlem hattındaki ikinci komut olacaktır Set-Acl -AclObject $NewAcl -WhatIf. Bu komut, komutundan etkilenecek dosyaları listeler. Sonucu gözden geçirdikten sonra Komutu WhatIf parametresi olmadan 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ı devralmaya karşı korumak için değişkenini $isProtected olarak $trueayarlayın. Devralmaya izin vermek için olarak $falseayarlayı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, Pets klasöründen devralınan Dog.txt ACL'leri doğrudan Dog.txt uygulanır ve Pets'e eklenen yeni erişim ilkeleri erişimi Dog.txt olarak 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-AclPath 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.

Type:Object
Position:1
Default value:None
Accept pipeline input:True
Accept wildcard characters:False

-ClearCentralAccessPolicy

Belirtilen öğeden merkezi erişim ilkesini kaldırır.

yöneticiler, Windows Server 2012'te başlayarak, kullanıcılar ve gruplar için merkezi erişim ilkeleri ayarlamak üzere Active Directory ve grup ilkesi kullanabilir. Daha fazla bilgi için bkz. Dinamik Access Control: Senaryoya Genel Bakış.

Bu parametre Windows PowerShell 3.0'da tanıtıldı.

Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Cmdlet'i çalıştırmadan önce sizden onay ister.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

-Exclude

Belirtilen öğeleri atlar. Bu parametrenin değeri Path parametresini niteler. gibi *.txtbir yol öğesi veya deseni girin. Joker karakterlere izin verilir.

Type:String[]
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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 uyguladığından filtreler diğer parametrelerden daha verimlidir.

Type:String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:True

-Include

Yalnızca belirtilen öğeleri değiştirir. Bu parametrenin değeri Path parametresini niteler. gibi *.txtbir yol öğesi veya deseni girin. Joker karakterlere izin verilir.

Type:String[]
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:True

-InputObject

Belirtilen nesnenin güvenlik tanımlayıcısını değiştirir. Nesnesini içeren bir değişken veya nesneyi alan bir komut girin.

nesnesini olarak değiştirilecek Set-Aclşekilde yöneltemezsiniz. Bunun yerine, komutunda InputObject parametresini açıkça kullanın.

Bu parametre Windows PowerShell 3.0'da tanıtıldı.

Type:PSObject
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters: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 tanıtıldı.

Type:String[]
Aliases:PSPath
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters: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 çıktı üretmez.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Path

Belirtilen öğenin güvenlik tanımlayıcısını değiştirir. Dosyanın yolu veya kayıt defteri anahtarı 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-Aclbir güvenlik nesnesi geçirerek ) ve Path parametresini (ad ve değer) atlarsanız, Set-Acl güvenlik nesnesine dahil edilen yolu kullanır.

Type:String[]
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters:True

-WhatIf

Cmdlet çalıştırılıyorsa ne olacağını gösterir. Cmdlet çalıştırılmaz.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

Girişler

ObjectSecurity

Bir ACL nesnesini bu cmdlet'e yöneltebilirsiniz.

CommonSecurityDescriptor

Bu cmdlet'e bir güvenlik tanımlayıcısı yöneltebilirsiniz.

Çıkışlar

None

Varsayılan olarak, bu cmdlet çıkış döndürmez.

FileSecurity

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.