變更 Windows PowerShell 執行原則的使用者喜好設定。

語法

Set-ExecutionPolicy [-ExecutionPolicy] {<Unrestricted> | <RemoteSigned> | <AllSigned> | <Restricted> | <Default> | <Bypass> | <Undefined>} [[-Scope] {<Process> | <CurrentUser> | <LocalMachine> | <UserPolicy> | <MachinePolicy>}] [-Force] [-Confirm] [-WhatIf] [<CommonParameters>]

描述

Set-ExecutionPolicy 會變更 Windows PowerShell 執行原則的使用者喜好設定。

若要在 Windows Vista、Windows Server 2008 和更新版的 Windows 上執行此命令,您必須利用 [以系統管理員身分執行] 選項啟動 Windows PowerShell,即使您是該電腦 Administrators 群組的成員也一樣。

執行原則是 Windows PowerShell 安全性策略的一部分。它決定您可否載入組態檔 (包括 Windows PowerShell 設定檔) 及執行指令碼,同時也決定哪些指令碼 (如果有的話) 必須先經過數位簽署才能執行。

如需詳細資訊,請參閱 about_Execution_Policies。

參數

-ExecutionPolicy <ExecutionPolicy>

為殼層指定新的執行原則。參數名稱 ("Name") 為選擇項。

有效的值包括:

-- Restricted:不載入組態檔或執行指令碼。預設值為 "Restricted"。

-- AllSigned:所有的指令碼和組態檔都需經過受信任的發行者簽署,包括本機電腦上撰寫的指令碼在內。

-- RemoteSigned:從網際網路下載的指令碼和組態檔都需經過受信任的發行者簽署。

-- Unrestricted:載入所有的組態檔且執行所有的指令碼。如果執行的指令碼是從網際網路下載而未經簽署,執行前將提示您權限有問題。

-- Bypass:不會封鎖任何項目,而且沒有警告或提示。

-- Undefined:從目前的範圍中移除目前所指派的執行原則。這個參數不會移除在群組原則範圍中設定的執行原則。

必要?

true

位置?

1

預設值

接受管線輸入?

true (ByValue)

接受萬用字元?

false

-Force

抑制所有提示。根據預設,每當您變更執行原則時,Set-ExecutionPolicy 就會顯示警告。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-Scope <ExecutionPolicyScope>

指定執行原則的範圍。預設值為 LocalMachine。

有效的值包括:

-- Process:執行原則只會影響目前的 Windows PowerShell 處理序。

-- CurrentUser:執行原則只會影響目前的使用者。

-- LocalMachine:執行原則會影響電腦的所有使用者。

若要從特定範圍中移除執行原則,請將該範圍的執行原則設定為 Undefined。

必要?

false

位置?

2

預設值

LocalMachine

接受管線輸入?

true (ByPropertyName)

接受萬用字元?

false

-Confirm

在執行命令前先提示確認。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-WhatIf

說明執行命令時將會發生何種情況,但不會實際執行命令。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

<CommonParameters>

這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.

輸入和輸出

輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。

輸入

Microsoft.PowerShell.ExecutionPolicy 或 System.String

您可經由管道將執行原則物件或包含執行原則名稱的字串輸出至 Set-ExecutionPolicy。

輸出

這個 Cmdlet 不會傳回任何輸出。

附註

當您使用 Set-ExecutionPolicy 時,新的使用者喜好設定就會寫入登錄,而且除非您加以變更,否則將一直保持不變。

不過,如果電腦或使用者啟用了「開啟指令碼執行」群組原則,使用者偏好設定雖然寫入登錄,但是不會生效,而且 Windows PowerShell 也會顯示訊息說明有衝突。您無法使用 Set-ExecutionPolicy 來覆寫群組原則,即便使用者喜好設定較該原則更具限制性。

範例 1

C:\PS>set-executionpolicy remotesigned

描述
-----------
這個命令將殼層執行原則的使用者偏好設定設為 RemoteSigned。






範例 2

C:\PS>Set-ExecutionPolicy Restricted

Set-ExecutionPolicy : Windows 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

描述
-----------
這個命令嘗試將殼層執行原則設定為 "Restricted"。"Restricted" 設定雖然寫入登錄,但是因為與群組原則衝突,所以不會生效,即便較該原則更具限制性,也是如此。






範例 3

C:\PS>invoke-command -computername Server01 -scriptblock {get-executionpolicy} | set-executionpolicy -force

描述
-----------
此命令從遠端電腦取得執行原則,並將其套用至本機電腦。

此命令是使用 Invoke-Command Cmdlet 將命令傳送至遠端電腦。因為您可以經由管道將 ExecutionPolicy (Microsoft.PowerShell.ExecutionPolicy) 物件輸出至 Set-ExecutionPolicy,所以 Set-ExecutionPolicy 命令不需要 ExecutionPolicy 參數。

此命令具有 Force 參數,以便抑制使用者提示。






範例 4

C:\PS>set-executionpolicy -scope CurrentUser -executionPolicy AllSigned -force

C:\PS> get-executionpolicy -list

        Scope   ExecutionPolicy
        -----   ---------------
MachinePolicy         Undefined
   UserPolicy         Undefined
      Process         Undefined
  CurrentUser         AllSigned
 LocalMachine      RemoteSigned

C:\PS> get-executionpolicy
AllSigned

描述
-----------
這個範例會示範如何設定特定範圍的執行原則。

第一個命令會使用 Set-ExecutionPolicy Cmdlet,針對目前的使用者設定執行原則 AllSigned。它會使用 Force 參數來抑制使用者提示。

第二個命令會使用 Get-ExecutionPolicy 的 List 參數來取得每個範圍中設定的執行原則。結果顯示,針對目前使用者所設定的執行原則與針對所有電腦使用者所設定的執行原則不同。

第三個命令會使用不含參數的 Get-ExecutionPolicy Cmdlet 來取得本機電腦上目前使用者的有效執行原則。結果確認,針對目前使用者所設定的執行原則優先順序高於針對所有用者所設定的執行原則。






範例 5

C:\PS>set-executionpolicy -scope CurrentUser -executionPolicy Undefined

描述
-----------
這個命令會使用執行原則值 Undefined 來有效地移除針對目前使用者範圍所設定的執行原則。因此,在群組原則或在 LocalMachine (所有使用者) 範圍中設定的執行原則都是有效的。

如果您將所有範圍中的執行原則設定為 Undefined,但並未設定群組原則,預設執行原則 Restricted 就會針對所有電腦使用者生效。






請參閱




目錄