Set-Acl
Mengubah pendeskripsi keamanan item tertentu, seperti file atau kunci registri.
Sintaks
ByPath (Default)
Set-Acl
[-Path] <String[]>
[-AclObject] <Object>
[-ClearCentralAccessPolicy]
[-PassThru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
ByInputObject
Set-Acl
[-InputObject] <PSObject>
[-AclObject] <Object>
[-PassThru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
ByLiteralPath
Set-Acl
[-AclObject] <Object>
-LiteralPath <String[]>
[-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 pengambilan file hanya untuk file dengan ekstensi .txt pada nama file. Parameter Force mendapatkan file tersembunyi, yang akan dikecualikan jika tidak. (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 menjadi 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 lebih lanjut, lihat tentang perlindungan aturan akses di .
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
$newParams = @{
TypeName = 'System.Security.AccessControl.FileSystemAccessRule'
ArgumentList = $fileSystemAccessRuleArgumentList
}
$fileSystemAccessRule = New-Object @newParams
# 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 parameter Path atau 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.
Properti parameter
| Jenis: | Object |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | 1 |
| Wajib: | True |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | 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.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | PSPath, LP |
Set parameter
ByPath
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
ByLiteralPath
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Confirm
Meminta konfirmasi sebelum menjalankan cmdlet.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | Cf |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Exclude
Menghilangkan item yang ditentukan. Nilai parameter ini memenuhi syarat parameter Jalur. Masukkan elemen atau pola jalur, seperti *.txt. Kartu liar diizinkan.
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | True |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-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.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | True |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Include
Hanya mengubah item yang ditentukan. Nilai parameter ini memenuhi syarat parameter Jalur.
Masukkan elemen atau pola jalur, seperti *.txt. Kartu liar diizinkan.
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | True |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-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.
Properti parameter
| Jenis: | PSObject |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
ByInputObject
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
-LiteralPath
Mengubah pendeskripsi keamanan item yang ditentukan. Tidak seperti Jalur, nilai parameter LiteralPath digunakan persis sebagaimana diketik. Tidak ada karakter yang ditafsirkan sebagai wildcard. Jika jalur menyertakan karakter escape, letakkan 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.
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | PSPath |
Set parameter
ByLiteralPath
| Position: | Named |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
-PassThru
Mengembalikan objek yang mewakili deskriptor keamanan yang diubah. Secara default, cmdlet ini tidak menghasilkan output apa pun.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Path
Mengubah pendeskripsi keamanan item yang ditentukan. Masukkan jalur ke item, seperti jalur ke file atau kunci registri. Kartu liar 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.
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | True |
| DontShow: | False |
Set parameter
ByPath
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
-WhatIf
Menunjukkan apa yang akan terjadi ketika cmdlet dijalankan. Cmdlet tidak dijalankan.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | wi |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
CommonParameters
Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.
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.
Cmdlet Set-Acl didukung oleh penyedia PowerShell FileSystem dan Registry. Dengan demikian, Anda dapat menggunakannya untuk mengubah deskriptor keamanan file, direktori, dan kunci registri.