Set-ExecutionPolicy
Mengatur kebijakan eksekusi PowerShell untuk komputer Windows.
Sintaks
All
Set-ExecutionPolicy
[-ExecutionPolicy] <ExecutionPolicy>
[[-Scope] <ExecutionPolicyScope>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Deskripsi
cmdlet Set-ExecutionPolicy mengubah kebijakan eksekusi PowerShell untuk komputer Windows. Untuk informasi lebih lanjut, lihat about_Execution_Policies.
Dimulai di PowerShell 6.0 untuk komputer non-Windows, kebijakan eksekusi default Unrestricted dan tidak dapat diubah.
Set-ExecutionPolicy Cmdlet tersedia, tetapi PowerShell menampilkan pesan konsol bahwa cmdlet tidak didukung.
Kebijakan eksekusi adalah bagian dari strategi keamanan PowerShell. Kebijakan eksekusi menentukan apakah Anda dapat memuat file konfigurasi, seperti profil PowerShell Anda, atau menjalankan skrip. Dan, apakah skrip harus ditandatangani secara digital.
Cakupan default cmdlet Set-ExecutionPolicy adalah LocalMachine, yang memengaruhi semua orang yang menggunakan komputer. Untuk mengubah kebijakan eksekusi untuk LocalMachine, mulai PowerShell dengan Jalankan sebagai Administrator.
Untuk menampilkan kebijakan eksekusi untuk setiap cakupan, gunakan Get-ExecutionPolicy -List. Untuk melihat kebijakan eksekusi yang efektif untuk sesi PowerShell Anda, gunakan Get-ExecutionPolicy tanpa parameter.
Note
Kebijakan Eksekusi juga dapat ditetapkan oleh Kebijakan Grup. Jika Kebijakan Grup ditetapkan, kebijakan eksekusi akan diambil alih yang ditetapkan secara lokal. Windows PowerShell 5.1 dan PowerShell 6.0 dan yang lebih tinggi menyimpan pengaturan kebijakan eksekusi di lokasi yang berbeda dan dikelola secara terpisah. Pengaturan untuk Windows PowerShell (powershell.exe) tidak memengaruhi PowerShell (pwsh.exe).
Contoh
Contoh 1: Mengatur kebijakan eksekusi
Contoh ini menunjukkan cara mengatur kebijakan eksekusi untuk komputer lokal.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine RemoteSigned
Cmdlet Set-ExecutionPolicy menggunakan parameter ExecutionPolicy untuk menentukan kebijakan RemoteSigned. Parameter Cakupan menentukan nilai cakupan default, LocalMachine. Untuk melihat pengaturan kebijakan eksekusi, gunakan cmdlet Get-ExecutionPolicy dengan parameter Daftar.
Contoh 2: Tetapkan kebijakan eksekusi yang bertentangan dengan Kebijakan Grup
Perintah ini mencoba mengatur kebijakan eksekusi cakupan LocalMachine ke Restricted.
LocalMachine lebih ketat, tetapi bukan kebijakan yang efektif karena bertentangan dengan Kebijakan Grup.
PS> Set-ExecutionPolicy -ExecutionPolicy Restricted -Scope LocalMachine
Set-ExecutionPolicy : PowerShell updated your local preference successfully, but the setting is
overridden by the Group Policy applied to your system. Due to the override, your shell will retain
its current effective execution policy of "AllSigned". Contact your Group Policy administrator for
more information. At line:1 char:20 + Set-ExecutionPolicy <<<< restricted
Contoh 3: Menerapkan kebijakan eksekusi dari komputer jarak jauh ke komputer lokal
Perintah ini mendapatkan objek kebijakan eksekusi dari komputer jarak jauh dan mengatur kebijakan pada komputer lokal.
Get-ExecutionPolicy mengirimkan objek Microsoft.PowerShell.ExecutionPolicy ke bawah alur.
Set-ExecutionPolicy menerima input alur dan tidak memerlukan parameter ExecutionPolicy.
Invoke-Command -ComputerName Server01 -ScriptBlock { Get-ExecutionPolicy } | Set-ExecutionPolicy
Cmdlet Invoke-Command dijalankan di komputer lokal dan mengirim ScriptBlock ke komputer jarak jauh. Parameter ComputerName menentukan komputer jarak jauh, Server01. Parameter ScriptBlock berjalan Get-ExecutionPolicy di komputer jarak jauh. Objek Get-ExecutionPolicy dikirimkan alur ke Set-ExecutionPolicy.
Set-ExecutionPolicy menerapkan kebijakan eksekusi ke cakupan default komputer lokal, LocalMachine.
Contoh 4: Atur cakupan untuk kebijakan eksekusi
Contoh ini menunjukkan cara mengatur kebijakan eksekusi untuk cakupan tertentu, CurrentUser. Cakupan CurrentUser hanya memengaruhi pengguna yang mengatur cakupan ini.
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser AllSigned
LocalMachine RemoteSigned
Set-ExecutionPolicy menggunakan parameter ExecutionPolicy untuk menentukan kebijakan AllSigned.
Parameter Cakupan menentukan CurrentUser. Untuk melihat pengaturan kebijakan eksekusi, gunakan cmdlet Get-ExecutionPolicy dengan parameter Daftar.
Kebijakan eksekusi yang efektif untuk pengguna menjadi AllSigned.
Contoh 5: Menghapus kebijakan eksekusi untuk pengguna saat ini
Contoh ini menunjukkan cara menggunakan Undefined kebijakan eksekusi untuk menghapus kebijakan eksekusi untuk cakupan tertentu.
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine RemoteSigned
Set-ExecutionPolicy menggunakan parameter ExecutionPolicy untuk menentukan kebijakan Undefined. Parameter Cakupan menentukan CurrentUser. Untuk melihat pengaturan kebijakan eksekusi, gunakan cmdlet Get-ExecutionPolicy dengan parameter Daftar.
Contoh 6: Atur kebijakan eksekusi untuk sesi PowerShell saat ini
Cakupan Process hanya memengaruhi sesi PowerShell saat ini. Kebijakan eksekusi disimpan dalam variabel lingkungan $Env:PSExecutionPolicyPreference dan dihapus saat sesi ditutup.
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope Process
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process AllSigned
CurrentUser RemoteSigned
LocalMachine RemoteSigned
Set-ExecutionPolicy menggunakan ExecutionPolicy parameter untuk menentukan kebijakan AllSigned. Parameter Cakupan menentukan nilai Process. Untuk melihat pengaturan kebijakan eksekusi, gunakan cmdlet Get-ExecutionPolicy dengan parameter Daftar.
Contoh 7: Buka blokir skrip untuk menjalankannya tanpa mengubah kebijakan eksekusi
Contoh ini menunjukkan bagaimana kebijakan eksekusi RemoteSigned mencegah Anda menjalankan skrip yang tidak ditandatangani.
Praktik terbaik adalah membaca kode skrip dan memverifikasi bahwa kode tersebut aman sebelum menggunakan cmdlet Unblock-File. cmdlet Unblock-File membuka blokir skrip sehingga dapat berjalan, tetapi tidak mengubah kebijakan eksekusi.
PS> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
PS> Get-ExecutionPolicy
RemoteSigned
PS> .\Start-ActivityTracker.ps1
.\Start-ActivityTracker.ps1 : File .\Start-ActivityTracker.ps1 cannot be loaded.
The file .\Start-ActivityTracker.ps1 is not digitally signed.
The script will not execute on the system.
For more information, see about_Execution_Policies at https://go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\Start-ActivityTracker.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
PS> Unblock-File -Path .\Start-ActivityTracker.ps1
PS> Get-ExecutionPolicy
RemoteSigned
PS> .\Start-ActivityTracker.ps1
Task 1:
Set-ExecutionPolicy menggunakan ExecutionPolicy parameter untuk menentukan kebijakan RemoteSigned. Kebijakan diatur untuk cakupan default, LocalMachine.
Cmdlet Get-ExecutionPolicy menunjukkan bahwa RemoteSigned adalah kebijakan eksekusi yang efektif untuk sesi PowerShell saat ini.
Skrip Start-ActivityTracker.ps1 dijalankan dari direktori saat ini. Skrip diblokir oleh RemoteSigned karena skrip tidak ditandatangani secara digital.
Untuk contoh ini, kode skrip ditinjau dan diverifikasi sebagai aman untuk dijalankan. Cmdlet Unblock-File menggunakan parameter Path untuk membuka blokir skrip.
Untuk memverifikasi bahwa Unblock-File tidak mengubah kebijakan eksekusi, Get-ExecutionPolicy menampilkan kebijakan eksekusi yang efektif, RemoteSigned.
Skrip, Start-ActivityTracker.ps1 dijalankan dari direktori saat ini. Skrip mulai berjalan karena tidak diblokir oleh cmdlet Unblock-File.
Parameter
-Confirm
Meminta konfirmasi sebelum menjalankan cmdlet.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | Cf |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-ExecutionPolicy
Menentukan kebijakan eksekusi. Jika tidak ada Kebijakan Grup dan kebijakan eksekusi setiap cakupan diatur ke Undefined, maka Restricted menjadi kebijakan yang efektif untuk semua pengguna.
Nilai kebijakan eksekusi yang dapat diterima adalah sebagai berikut:
-
AllSigned. Mengharuskan semua skrip dan file konfigurasi ditandatangani oleh penerbit tepercaya, termasuk skrip yang ditulis di komputer lokal. -
Bypass. Tidak ada yang diblokir dan tidak ada peringatan atau petunjuk. -
Default. Mengatur kebijakan eksekusi default.Restricteduntuk klien Windows atauRemoteSigneduntuk server Windows. -
RemoteSigned. Mengharuskan semua skrip dan file konfigurasi yang diunduh dari Internet ditandatangani oleh penerbit tepercaya. Kebijakan eksekusi default untuk komputer server Windows. -
Restricted. Tidak memuat file konfigurasi atau menjalankan skrip. Kebijakan eksekusi default untuk komputer klien Windows. -
Undefined. Tidak ada kebijakan eksekusi yang ditetapkan untuk cakupan. Menghapus kebijakan eksekusi yang ditetapkan dari cakupan yang tidak ditetapkan oleh Kebijakan Grup. Jika kebijakan eksekusi di semua cakupanUndefined, kebijakan eksekusi yang efektifRestricted. -
Unrestricted. Dimulai di PowerShell 6.0, ini adalah kebijakan eksekusi default untuk komputer non-Windows dan tidak dapat diubah. Memuat semua file konfigurasi dan menjalankan semua skrip. Jika Anda menjalankan skrip yang tidak ditandatangani yang diunduh dari internet, Anda akan dimintai izin sebelum dijalankan.
Properti parameter
| Jenis: | ExecutionPolicy |
| Nilai default: | None |
| Nilai yang diterima: | AllSigned, Bypass, Default, RemoteSigned, Restricted, Undefined, Unrestricted |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
(All)
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Force
Menekan semua perintah konfirmasi. Berhati-hatilah dengan parameter ini untuk menghindari hasil yang tidak terduga.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Scope
Menentukan cakupan yang terpengaruh oleh kebijakan eksekusi. Cakupan default adalah LocalMachine. Parameter menerima nilai berikut:
-
MachinePolicy- Diatur oleh Kebijakan Grup untuk semua pengguna komputer -
UserPolicy- Diatur oleh Kebijakan Grup untuk pengguna komputer saat ini -
Process- Hanya memengaruhi sesi PowerShell saat ini -
CurrentUser- Hanya memengaruhi pengguna saat ini -
LocalMachine- Cakupan default yang memengaruhi semua pengguna komputer
Note
MachinePolicy dan UserPolicy ditetapkan oleh Kebijakan Grup. Jika Anda mencoba mengatur cakupan ke salah satu nilai ini, PowerShell menampilkan pesan kesalahan bahwa cakupan diatur oleh Kebijakan Grup dan tidak dapat diubah.
Jika Kebijakan Eksekusi tidak ditentukan oleh Kebijakan Grup, kebijakan eksekusi yang efektif ditentukan oleh urutan prioritas sebagai berikut:
-
Process- Prioritas tertinggi -
CurrentUser- Prioritas tertinggi kedua -
LocalMachine- Prioritas terendah
Lihat bagian CATATAN untuk informasi selengkapnya tentang bagaimana PowerShell menyimpan kebijakan eksekusi.
Properti parameter
| Jenis: | ExecutionPolicyScope |
| Nilai default: | LocalMachine |
| Nilai yang diterima: | CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
(All)
| Position: | 1 |
| Wajib: | False |
| 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 |
Kumpulan 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
ExecutionPolicy
Anda dapat menyalurkan objek kebijakan eksekusi ke cmdlet ini.
String
Anda dapat menyalurkan string yang berisi nama kebijakan eksekusi ke cmdlet ini.
Output
None
Cmdlet ini tidak mengembalikan output.
Catatan
Set-ExecutionPolicy tidak dapat mengubah MachinePolicy cakupan dan UserPolicy karena diatur oleh Kebijakan Grup.
Set-ExecutionPolicy tidak mengambil alih Kebijakan Grup, meskipun preferensi pengguna lebih ketat daripada kebijakan.
Jika Kebijakan Eksekusi tidak ditentukan oleh Kebijakan Grup, kebijakan eksekusi yang efektif ditentukan oleh urutan prioritas sebagai berikut:
-
Process- Prioritas tertinggi. CakupanProcesshanya memengaruhi sesi PowerShell saat ini. Kebijakan eksekusi disimpan di variabel$Env:PSExecutionPolicyPreferencelingkungan , bukan registri. Saat sesi PowerShell ditutup, variabel dan nilai dihapus. -
CurrentUser- Prioritas tertinggi kedua. Pengaturan disimpan dalam file khususpowershell.config.jsonpengguna. -
LocalMachine- Prioritas terendah. Pengaturan disimpan dalam$PSHOME/powershell.config.jsonfile.
Untuk informasi selengkapnya tentang file, powershell.config.json lihat about_PowerShell_Config.