Set-Acl

Mengubah pendeskripsi keamanan item tertentu, seperti file atau kunci registri.

Sintaks

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>]

Deskripsi

Cmdlet ini hanya tersedia di platform Windows.

Set-Acl Cmdlet mengubah pendeskripsi keamanan item tertentu, seperti file atau kunci registri, agar sesuai dengan nilai dalam deskriptor keamanan yang Anda berikan.

Untuk menggunakan Set-Acl, gunakan parameter Jalur atau InputObject untuk mengidentifikasi item yang deskriptor keamanannya ingin Anda ubah. Kemudian, gunakan parameter AclObject atau SecurityDescriptor untuk menyediakan deskriptor keamanan yang memiliki nilai yang ingin Anda terapkan. Set-Acl menerapkan pendeskripsi keamanan yang disediakan. Ini menggunakan nilai parameter AclObject sebagai model dan mengubah nilai dalam deskriptor keamanan item agar sesuai dengan nilai dalam parameter AclObject .

Contoh

Contoh 1: Menyalin deskriptor keamanan dari satu file ke file lainnya

$DogACL = Get-Acl -Path "C:\Dog.txt"
Set-Acl -Path "C:\Cat.txt" -AclObject $DogACL

Perintah ini menyalin nilai dari pendeskripsi keamanan file Dog.txt ke deskriptor keamanan file Cat.txt. Ketika perintah selesai, deskriptor keamanan file Dog.txt dan Cat.txt identik.

Perintah pertama menggunakan Get-Acl cmdlet untuk mendapatkan pendeskripsi keamanan file Dog.txt. Operator penugasan (=) menyimpan deskriptor keamanan dalam nilai variabel $DogACL.

Perintah kedua menggunakan Set-Acl untuk mengubah nilai dalam ACL Cat.txt ke nilai di $DogACL.

Nilai parameter Path adalah jalur ke file Cat.txt. Nilai parameter AclObject adalah model ACL, dalam hal ini, ACL Dog.txt sebagai disimpan dalam $DogACL variabel.

Contoh 2: Gunakan operator alur untuk meneruskan deskriptor

Get-Acl -Path "C:\Dog.txt" | Set-Acl -Path "C:\Cat.txt"

Perintah ini hampir sama dengan perintah dalam contoh sebelumnya, kecuali bahwa perintah menggunakan operator alur (|) untuk mengirim deskriptor keamanan dari Get-Acl perintah ke Set-Acl perintah.

Perintah pertama menggunakan Get-Acl cmdlet untuk mendapatkan pendeskripsi keamanan file Dog.txt. Operator alur (|) meneruskan objek yang mewakili deskriptor keamanan Dog.txt ke Set-Acl cmdlet.

Perintah kedua menggunakan Set-Acl untuk menerapkan pendeskripsi keamanan Dog.txt ke Cat.txt. Ketika perintah selesai, ACL file Dog.txt dan Cat.txt identik.

Contoh 3: Menerapkan deskriptor keamanan ke beberapa file

$NewAcl = Get-Acl File0.txt
Get-ChildItem -Path "C:\temp" -Recurse -Include "*.txt" -Force | Set-Acl -AclObject $NewAcl

Perintah ini menerapkan deskriptor keamanan dalam file File0.txt ke semua file teks di C:\Temp direktori dan semua subdirektorinya.

Perintah pertama mendapatkan pendeskripsi keamanan file File0.txt di direktori saat ini dan menggunakan operator penugasan (=) untuk menyimpannya dalam $NewACL variabel.

Perintah pertama dalam alur menggunakan cmdlet Get-ChildItem untuk mendapatkan semua file teks di C:\Temp direktori. Parameter Berulang memperluas perintah ke semua subdirektori .C:\temp Parameter Sertakan membatasi file yang diambil untuk file dengan .txt ekstensi nama file. Parameter Force mendapatkan file tersembunyi, yang jika tidak akan dikecualikan. (Anda tidak dapat menggunakan c:\temp\*.txt, karena parameter Berulang berfungsi pada direktori, bukan pada file.)

Operator alur (|) mengirim objek yang mewakili file yang diambil ke Set-Acl cmdlet, yang menerapkan deskriptor keamanan dalam parameter AclObject ke semua file dalam alur.

Dalam praktiknya, yang terbaik adalah menggunakan parameter WhatIf dengan semua Set-Acl perintah yang dapat memengaruhi lebih dari satu item. Dalam hal ini, perintah kedua dalam alur adalah Set-Acl -AclObject $NewAcl -WhatIf. Perintah ini mencantumkan file yang akan dipengaruhi oleh perintah. Setelah meninjau hasilnya, Anda dapat menjalankan perintah lagi tanpa parameter WhatIf .

Contoh 4: Menonaktifkan pewarisan dan mempertahankan aturan akses yang diwariskan

$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

Perintah ini menonaktifkan pewarisan akses dari folder induk, sambil tetap mempertahankan aturan akses yang diwariskan yang ada.

Perintah pertama menggunakan Get-Acl cmdlet untuk mendapatkan pendeskripsi keamanan file Dog.txt.

Selanjutnya, variabel dibuat untuk mengonversi aturan akses yang diwariskan ke aturan akses eksplisit. Untuk melindungi aturan akses yang terkait dengan ini dari pewarisan, atur $isProtected variabel ke $true. Untuk mengizinkan pewarisan, atur $isProtected ke $false. Untuk informasi selengkapnya, lihat mengatur perlindungan aturan akses.

Atur $preserveInheritance variabel ke $true untuk mempertahankan aturan akses yang diwariskan atau $false untuk menghapus aturan akses yang diwariskan. Kemudian perlindungan aturan akses diperbarui menggunakan metode SetAccessRuleProtection().

Perintah terakhir menggunakan Set-Acl untuk menerapkan deskriptor keamanan ke Dog.txt. Ketika perintah selesai, ACL Dog.txt yang diwarisi dari folder Hewan Peliharaan akan diterapkan langsung ke Dog.txt, dan kebijakan akses baru yang ditambahkan ke Hewan Peliharaan tidak akan mengubah akses ke Dog.txt.

Contoh 5: Berikan Administrator Kontrol Penuh file

$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

Perintah ini akan memberikan kontrol penuh grup BUILTIN\Administrators atas file Dog.txt.

Perintah pertama menggunakan Get-Acl cmdlet untuk mendapatkan pendeskripsi keamanan file Dog.txt.

Variabel berikutnya dibuat untuk memberikan kontrol penuh grup BUILTIN\Administrators atas file Dog.txt. Variabel $identity diatur ke nama akun pengguna. Variabel $fileSystemRights diatur ke FullControl, dan dapat menjadi salah satu nilai FileSystemRights yang menentukan jenis operasi yang terkait dengan aturan akses. Variabel $type diatur ke "Izinkan" untuk menentukan apakah akan mengizinkan atau menolak operasi. Variabel $fileSystemAccessRuleArgumentList adalah daftar argumen yang akan diteruskan saat membuat objek FileSystemAccessRule baru. Kemudian objek FileSystemAccessRule baru dibuat, dan objek FileSystemAccessRule diteruskan ke metode SetAccessRule(), menambahkan aturan akses baru.

Perintah terakhir menggunakan Set-Acl untuk menerapkan deskriptor keamanan ke Dog.txt. Ketika perintah selesai, grup BUILTIN\Administrators akan memiliki kontrol penuh atas Dog.txt.

Parameter

-AclObject

Menentukan ACL dengan nilai properti yang diinginkan. Set-Acl mengubah ACL item yang ditentukan oleh parameter Jalur atau InputObject agar sesuai dengan nilai dalam objek keamanan yang ditentukan.

Anda dapat menyimpan output Get-Acl perintah dalam variabel lalu menggunakan parameter AclObject untuk meneruskan variabel, atau mengetik Get-Acl perintah.

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

-ClearCentralAccessPolicy

Menghapus kebijakan akses pusat dari item yang ditentukan.

Dimulai di Windows Server 2012, administrator dapat menggunakan Direktori Aktif dan Kebijakan Grup untuk mengatur kebijakan akses pusat bagi pengguna dan grup. Untuk informasi selengkapnya, lihat Kontrol Akses Dinamis: Gambaran Umum Skenario.

Parameter ini diperkenalkan di Windows PowerShell 3.0.

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

-Confirm

Meminta Anda mengonfirmasi sebelum menjalankan cmdlet.

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

-Exclude

Menghilangkan item yang ditentukan. Nilai parameter ini memenuhi syarat parameter Path . Masukkan elemen atau pola jalur, seperti *.txt. Kartubebas diizinkan.

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

-Filter

Menentukan filter dalam format atau bahasa penyedia. Nilai parameter ini memenuhi syarat parameter Path . Sintaks filter, termasuk penggunaan wildcard, tergantung pada penyedia. Filter lebih efisien daripada parameter lain, karena penyedia menerapkannya saat mengambil objek, daripada meminta PowerShell memfilter objek setelah diambil.

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

-Include

Hanya mengubah item yang ditentukan. Nilai parameter ini memenuhi syarat parameter Path . Masukkan elemen atau pola jalur, seperti *.txt. Kartubebas diizinkan.

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

-InputObject

Mengubah pendeskripsi keamanan objek yang ditentukan. Masukkan variabel yang berisi objek atau perintah yang mendapatkan objek.

Anda tidak dapat menyalurkan objek yang akan diubah ke Set-Acl. Sebagai gantinya , gunakan parameter InputObject secara eksplisit dalam perintah .

Parameter ini diperkenalkan di Windows PowerShell 3.0.

Type:PSObject
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

Mengubah pendeskripsi keamanan item yang ditentukan. Tidak seperti Path, nilai parameter LiteralPath digunakan persis seperti yang ditik. Tidak ada karakter yang ditafsirkan sebagai kartubebas. Jika jalur menyertakan karakter escape, sertakan dalam tanda kutip tunggal ('). Tanda kutip tunggal memberi tahu PowerShell untuk tidak menginterpretasikan karakter apa pun sebagai urutan escape.

Parameter ini diperkenalkan di Windows PowerShell 3.0.

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

-Passthru

Mengembalikan objek yang mewakili deskriptor keamanan yang diubah. Secara default, cmdlet ini tidak menghasilkan output apa pun.

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

-Path

Mengubah pendeskripsi keamanan item yang ditentukan. Masukkan jalur ke item, seperti jalur ke file atau kunci registri. Kartubebas diizinkan.

Jika Anda meneruskan objek keamanan ke Set-Acl (baik dengan menggunakan parameter AclObject atau SecurityDescriptor atau dengan meneruskan objek keamanan dari Get-Acl ke Set-Acl), dan Anda menghilangkan parameter Jalur (nama dan nilai), Set-Acl menggunakan jalur yang disertakan dalam objek keamanan.

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

-WhatIf

Menunjukkan apa yang akan terjadi jika cmdlet berjalan. Cmdlet tidak dijalankan.

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

Input

ObjectSecurity

Anda dapat menyalurkan objek ACL ke cmdlet ini.

CommonSecurityDescriptor

Anda dapat menyalurkan deskriptor keamanan ke cmdlet ini.

Output

None

Secara default, cmdlet ini tidak mengembalikan output.

FileSecurity

Saat Anda menggunakan parameter PassThru , cmdlet ini mengembalikan objek keamanan. Jenis objek keamanan tergantung pada jenis item.

Catatan

Cmdlet ini hanya tersedia di platform Windows.

Set-Acl Cmdlet didukung oleh sistem file PowerShell dan penyedia registri. Dengan demikian, Anda dapat menggunakannya untuk mengubah deskriptor keamanan file, direktori, dan kunci registri.