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ğ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 $DogACLdeğ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:\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 öğ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 $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, 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önetici istrator'lara 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\Yönetici istrators 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\Yönetici istrators 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\Yönetici istrators 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
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:SwitchParameter
Position:Named
Default value:False
Required: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
Required: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
Required:False
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 bunları uyguladığından filtreler diğer parametrelerden daha verimlidir.

Type:String
Position:Named
Default value:None
Required:False
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
Required:False
Accept pipeline input:False
Accept wildcard characters: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-Aclnesneyi 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.

Type:PSObject
Position:0
Default value:None
Required:True
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 kullanıma sunulmuştur.

Type:String[]
Aliases:PSPath
Position:Named
Default value:None
Required:True
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 çıkış oluşturmaz.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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-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
Required:True
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
Required: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.