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.
cmdlet Set-Acl
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 Path 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 deskriptor 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 pendeskripsi keamanan file Cat.txt. Ketika perintah selesai, deskriptor keamanan file Dog.txt dan Cat.txt identik.
Perintah pertama menggunakan cmdlet Get-Acl
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 dalam $DogACL
.
Nilai parameter Jalur adalah jalur ke file Cat.txt. Nilai parameter AclObject adalah ACL model, dalam hal ini, ACL Dog.txt sebagai disimpan dalam variabel $DogACL
.
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 menggunakan operator alur (|
) untuk mengirim pendeskripsi keamanan dari perintah Get-Acl
ke perintah Set-Acl
.
Perintah pertama menggunakan cmdlet Get-Acl
untuk mendapatkan pendeskripsi keamanan file Dog.txt. Operator alur (|
) meneruskan objek yang mewakili pendeskripsi keamanan Dog.txt ke cmdlet Set-Acl
.
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 direktori C:\Temp
dan semua subdirektorinya.
Perintah pertama mendapatkan pendeskripsi keamanan file File0.txt di direktori saat ini dan menggunakan operator penugasan (=
) untuk menyimpannya dalam variabel $NewACL
.
Perintah pertama dalam alur menggunakan cmdlet Get-ChildItem untuk mendapatkan semua file teks di direktori C:\Temp
. Parameter Recurse memperluas perintah ke semua subdirektori C:\temp
. Parameter Sertakan membatasi file yang diambil untuk file dengan ekstensi nama file .txt
. Parameter Force mendapatkan file tersembunyi, yang jika tidak akan dikecualikan. (Anda tidak dapat menggunakan c:\temp\*.txt
, karena parameter Recurse berfungsi pada direktori, bukan pada file.)
Operator alur (|
) mengirim objek yang mewakili file yang diambil ke cmdlet Set-Acl
, yang menerapkan deskriptor keamanan dalam parameter AclObject ke semua file dalam alur.
Dalam praktiknya, yang terbaik adalah menggunakan parameter WhatIf dengan semua perintah Set-Acl
yang dapat memengaruhi lebih dari satu item. Dalam hal ini, perintah kedua dalam alur akan 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 cmdlet Get-Acl
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 variabel $isProtected
ke $true
. Untuk mengizinkan pewarisan, atur $isProtected
ke $false
. Untuk informasi selengkapnya, lihat mengatur perlindungan aturan akses.
Atur variabel $preserveInheritance
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 pendeskripsi 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 BUILTIN\Administrators grup Kontrol penuh file Dog.txt.
Perintah pertama menggunakan cmdlet Get-Acl
untuk mendapatkan pendeskripsi keamanan file Dog.txt.
Variabel berikutnya dibuat untuk memberikan BUILTIN\Administrators kontrol penuh grup 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 pendeskripsi 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 Jalur atau parameter InputObject agar sesuai dengan nilai dalam objek keamanan yang ditentukan.
Anda dapat menyimpan output perintah Get-Acl
dalam variabel lalu menggunakan parameter AclObject untuk meneruskan variabel, atau mengetik perintah Get-Acl
.
Jenis: | Object |
Position: | 1 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | 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.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | False |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Confirm
Meminta konfirmasi sebelum menjalankan cmdlet.
Jenis: | SwitchParameter |
Alias: | cf |
Position: | Named |
Nilai default: | False |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Exclude
Menghilangkan item yang ditentukan. Nilai parameter ini memenuhi syarat parameter Jalur. Masukkan elemen atau pola jalur, seperti *.txt
. Kartubebas diizinkan.
Jenis: | String[] |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | True |
-Filter
Menentukan filter dalam format atau bahasa penyedia. Nilai parameter ini memenuhi syarat parameter Jalur. 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.
Jenis: | String |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | True |
-Include
Hanya mengubah item yang ditentukan. Nilai parameter ini memenuhi syarat parameter Jalur.
Masukkan elemen atau pola jalur, seperti *.txt
. Kartubebas diizinkan.
Jenis: | String[] |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | 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.
Jenis: | PSObject |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | False |
-LiteralPath
Mengubah pendeskripsi keamanan item yang ditentukan. Tidak seperti Jalur, nilai parameter LiteralPath digunakan persis seperti yang diketik. 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.
Jenis: | String[] |
Alias: | PSPath |
Position: | Named |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | False |
-PassThru
Mengembalikan objek yang mewakili deskriptor keamanan yang diubah. Secara default, cmdlet ini tidak menghasilkan output apa pun.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | 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.
Jenis: | String[] |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | True |
-WhatIf
Menunjukkan apa yang akan terjadi jika cmdlet berjalan. Cmdlet tidak dijalankan.
Jenis: | SwitchParameter |
Alias: | wi |
Position: | Named |
Nilai default: | False |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
Input
Anda dapat menyalurkan objek ACL ke cmdlet ini.
Anda dapat menyalurkan deskriptor keamanan ke cmdlet ini.
Output
None
Secara default, cmdlet ini tidak mengembalikan output.
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.
Cmdlet Set-Acl
didukung oleh sistem file PowerShell dan penyedia registri. Dengan demikian, Anda dapat menggunakannya untuk mengubah deskriptor keamanan file, direktori, dan kunci registri.