Bagikan melalui


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

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 sistem file PowerShell dan penyedia registri. Dengan demikian, Anda dapat menggunakannya untuk mengubah deskriptor keamanan file, direktori, dan kunci registri.