Set-ExecutionPolicy
Mengatur kebijakan eksekusi PowerShell untuk komputer Windows.
Sintaks
Set-ExecutionPolicy
[-ExecutionPolicy] <ExecutionPolicy>
[[-Scope] <ExecutionPolicyScope>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Deskripsi
Set-ExecutionPolicy
Cmdlet mengubah kebijakan eksekusi PowerShell untuk komputer Windows. Untuk informasi selengkapnya, lihat about_Execution_Policies.
Dimulai di PowerShell 6.0 untuk komputer non-Windows, kebijakan eksekusi default adalah Unrestricted
dan tidak dapat diubah. Set-ExecutionPolicy
Cmdlet tersedia, tetapi PowerShell menampilkan pesan konsol bahwa cmdlet tersebut 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 sebelum dijalankan.
Cakupan Set-ExecutionPolicy
default cmdlet 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 penggunaan Get-ExecutionPolicy
sesi PowerShell Anda tanpa parameter.
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
Set-ExecutionPolicy
Cmdlet menggunakan parameter ExecutionPolicy untuk menentukan RemoteSigned
kebijakan. Parameter Cakupan menentukan nilai cakupan default, LocalMachine
. Untuk melihat pengaturan kebijakan eksekusi, gunakan Get-ExecutionPolicy
cmdlet dengan parameter Daftar .
Contoh 2: Tetapkan kebijakan eksekusi yang bertentangan dengan Kebijakan Grup
Perintah ini mencoba mengatur LocalMachine
kebijakan eksekusi cakupan ke Restricted
.
LocalMachine
lebih ketat, tetapi bukan kebijakan yang efektif karena bertentangan dengan Kebijakan Grup. Kebijakan Restricted
ditulis ke sarang HKEY_LOCAL_MACHINE
registri .
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
PS> Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds
Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds
Name Property
---- --------
Microsoft.PowerShell Path : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
ExecutionPolicy : Restricted
ScriptedDiagnostics ExecutionPolicy : Unrestricted
Set-ExecutionPolicy
Cmdlet menggunakan parameter ExecutionPolicy untuk menentukan Restricted
kebijakan. Parameter Cakupan menentukan nilai cakupan default, LocalMachine
. Get-ChildItem
Cmdlet menggunakan parameter Jalur dengan HKLM:
drive untuk menentukan lokasi registri.
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
mengirim 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
Invoke-Command
Cmdlet 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 AllSigned
kebijakan.
Parameter Cakupan menentukan CurrentUser
. Untuk melihat pengaturan kebijakan eksekusi, gunakan Get-ExecutionPolicy
cmdlet 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 Undefined
kebijakan. Parameter Cakupan menentukan CurrentUser
. Untuk melihat pengaturan kebijakan eksekusi, gunakan Get-ExecutionPolicy
cmdlet 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 $env:PSExecutionPolicyPreference
lingkungan 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 parameter ExecutionPolicy untuk menentukan AllSigned
kebijakan. Parameter Cakupan menentukan nilai Process
. Untuk melihat pengaturan kebijakan eksekusi, gunakan Get-ExecutionPolicy
cmdlet dengan parameter Daftar .
Contoh 7: Buka blokir skrip untuk menjalankannya tanpa mengubah kebijakan eksekusi
Contoh ini menunjukkan bagaimana RemoteSigned
kebijakan eksekusi mencegah Anda menjalankan skrip yang tidak ditandatangani.
Praktik terbaik adalah membaca kode skrip dan memverifikasi bahwa kode tersebut aman sebelum menggunakan Unblock-File
cmdlet. Unblock-File
Cmdlet 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 parameter ExecutionPolicy untuk menentukan RemoteSigned
kebijakan. Kebijakan diatur untuk cakupan default, LocalMachine
.
Get-ExecutionPolicy
Cmdlet menunjukkan bahwa adalah kebijakan eksekusi yang RemoteSigned
efektif untuk sesi PowerShell saat ini.
RemoteSigned Start-ActivityTracker.ps1 script is executed from the current directory. The script is blocked by
' karena skrip tidak ditandatangani secara digital.
Untuk contoh ini, kode skrip ditinjau dan diverifikasi sebagai aman untuk dijalankan. Unblock-File
Cmdlet menggunakan parameter Jalur 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 Unblock-File
cmdlet.
Parameter
-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 |
-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 perintah.Default
. Mengatur kebijakan eksekusi default.Restricted
untuk klien Windows atauRemoteSigned
untuk 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 cakupan adalahUndefined
, kebijakan eksekusi yang efektif adalahRestricted
.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.
Type: | ExecutionPolicy |
Accepted values: | AllSigned, Bypass, Default, RemoteSigned, Restricted, Undefined, Unrestricted |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Force
Menekan semua perintah konfirmasi. Berhati-hatilah dengan parameter ini untuk menghindari hasil yang tidak terduga.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Scope
Menentukan cakupan yang dipengaruhi oleh kebijakan eksekusi. Cakupan defaultnya adalah LocalMachine
.
Kebijakan eksekusi yang efektif ditentukan oleh urutan prioritas sebagai berikut:
MachinePolicy
- Diatur oleh Kebijakan Grup untuk semua pengguna komputerUserPolicy
- Diatur oleh Kebijakan Grup untuk pengguna komputer saat iniProcess
- Hanya memengaruhi sesi PowerShell saat iniLocalMachine
- Cakupan default yang memengaruhi semua pengguna komputerCurrentUser
- Hanya memengaruhi pengguna saat ini
Cakupan Process
hanya memengaruhi sesi PowerShell saat ini. Kebijakan eksekusi disimpan dalam variabel $env:PSExecutionPolicyPreference
lingkungan , bukan registri. Saat sesi PowerShell ditutup, variabel dan nilai akan dihapus.
Kebijakan eksekusi untuk CurrentUser
cakupan ditulis ke sarang HKEY_LOCAL_USER
registri .
Kebijakan eksekusi untuk LocalMachine
cakupan ditulis ke sarang HKEY_LOCAL_MACHINE
registri .
Type: | ExecutionPolicyScope |
Accepted values: | CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy |
Position: | 1 |
Default value: | LocalMachine |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-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
Anda dapat menyalurkan objek kebijakan eksekusi ke cmdlet ini.
Anda dapat menyalurkan string yang berisi nama kebijakan eksekusi ke cmdlet ini.
Output
None
Cmdlet ini tidak mengembalikan output.
Catatan
Set-ExecutionPolicy
tidak mengubah MachinePolicy
cakupan dan UserPolicy
karena ditetapkan oleh Kebijakan Grup.
Set-ExecutionPolicy
tidak mengambil alih Kebijakan Grup, meskipun preferensi pengguna lebih ketat daripada kebijakan.
Jika Kebijakan Grup Mengaktifkan Eksekusi Skrip diaktifkan untuk komputer atau pengguna, preferensi pengguna disimpan, tetapi tidak efektif. PowerShell menampilkan pesan yang menjelaskan konflik.