識別安裝和使用 Windows PowerShell 的因素

已完成

當您使用 PowerShell 來管理和自動化管理工作時,請進行數個考量,包括:

  • 與 Windows PowerShell 並存安裝和使用 PowerShell。
  • 使用管理認證來執行 PowerShell。
  • 在 PowerShell 中識別和修改執行原則。

與 Windows PowerShell 並存安裝和使用 PowerShell

根據 Windows 作業系統版本,組織可能會有執行不同 PowerShell 版本的電腦。 有時候,這些混合版本環境是不允許安裝較新 PowerShell 版本的組織原則結果。 其也可能是與特定 PowerShell 版本相容的軟體產品 (特別是伺服器軟體) 的結果。

如果您安裝最新版本的 PowerShell,則最後會在系統上安裝多個 PowerShell 版本。 例如,PowerShell 7 的設計目的是要與 Windows PowerShell 5.1 共存,而且將安裝至新的目錄,並啟用與 Windows PowerShell 的並存執行。

相較於 Windows PowerShell,安裝最新版本的 PowerShell 會導致下列情況:

  • 個別安裝路徑和可執行檔名稱。 Windows PowerShell 5.1 會安裝至 $env:WINDIR\System32\WindowsPowerShell\v1.0 位置。 PowerShell 7 會安裝至 $env:ProgramFiles\PowerShell\7 位置。 新的位置會新增至您的 PATH,讓您能夠同時執行 Windows PowerShell 5.1 和 PowerShell 7。 在 Windows PowerShell 中,PowerShell 可執行檔的名稱為 powershell.exe。 在第 6 版和更新版本中,可執行檔的名稱為 pwsh.exe。 新的名稱可讓您輕鬆地支援這兩個版本的並存執行。
  • 個別 PSModulePath。 根據預設,Windows PowerShell 與 PowerShell 7 會在不同的位置儲存模組。 PowerShell 7 會將那些位置合併到 $Env:PSModulePath 環境變數中。 當您依名稱匯入模組時,PowerShell 會檢查 $Env:PSModulePath 所指定的位置。 此功能可讓 PowerShell 7 同時載入核心和桌面模組。
  • 每個版本都有個別設定檔。 PowerShell 設定檔是在 PowerShell 啟動時執行的指令碼。 此指令碼會新增命令、別名、函數、變數、模組和 PowerShell 磁碟機,以自訂 PowerShell 環境。 在 Windows PowerShell 5.1 中,設定檔的位置是 $HOME\Documents\WindowsPowerShell。 在 PowerShell 7 中,設定檔的位置是 $HOME\Documents\PowerShell
  • 個別事件記錄檔。 Windows PowerShell 和 PowerShell 7 將事件記錄到個別 Windows 事件記錄檔。

當您檢閱 PowerShell 工作階段時,請務必判斷您使用的版本。 若要判斷目前版本,請在 PowerShell 主控台中輸入 $PSVersionTable,然後選取 Enter。 PowerShell 會顯示各種元件的版本號碼,包括主要 PowerShell 版本號碼。

使用管理認證來執行 PowerShell

在 64 位元作業系統上,PowerShell 主應用程式可在 64 位元 (x64) 和 32 位元 (x86) 版本中使用。 使用 Windows PowerShell 時,您將使用 [開始] 功能表中顯示為 [Windows PowerShell] 或 [Windows PowerShell ISE] 的 64 位元版本。 32 位元版本提供與本機安裝的 32 位元 shell 擴充功能的相容性。 它們在 [開始] 功能表中顯示為 [Windows PowerShell (x86)] 或 [Windows PowerShell ISE (x86)]。 一旦您開啟 Windows PowerShell,應用程式視窗的標題列就會反映 [開始] 功能表中的相同名稱。 請確定您要針對您要執行的工作開啟適當的版本。

在 32 位元作業系統上,PowerShell 主應用程式只能在 32 位元版本中使用。 使用 Windows PowerShell 時,您會發現圖示和視窗標題列沒有 (x86) 指定。 相反地,它們只會在 [開始] 功能表中顯示為 [Windows PowerShell] 和 [Windows PowerShell ISE]

如果您想要使用 PowerShell 在已啟用使用者帳戶控制 (UAC) 的電腦上執行管理工作,則可能必須採取額外的步驟以使用完整管理認證來執行 PowerShell Cmdlet。 若要這樣做,請以滑鼠右鍵按一下或啟用應用程式圖示的捷徑功能表,然後選取 [以系統管理員身分執行]。 當您使用管理認證來執行 PowerShell 時,主應用程式的視窗標題列將會包括 Administrator 前置詞。

在 PowerShell 中識別和修改執行原則

PowerShell 中的執行原則是為了將使用者不小心執行 PowerShell 指令碼的可能性降到最低。 您可以將其視為安全功能,而此安全功能控制 PowerShell 載入設定檔以及執行指令碼的條件。 此功能有助於防止執行惡意指令碼。

重要

PowerShell 中的執行原則不是可限制使用者動作的安全性系統。 例如,如果使用者無法執行指令碼,則可以在命令列輸入指令碼內容,以輕鬆地略過原則。

若要識別目前 PowerShell 工作階段的有效執行原則,請使用下列 Cmdlet:

Get-ExecutionPolicy

您可以設定下列原則設定:

  • AllSigned。 限制所有已簽署指令碼的指令碼執行。 此設定需要所有指令碼都是由受信任的發行者所簽署,包括您在本機電腦上撰寫的指令碼。 而這會在執行來自尚未分類為受信任或未受信任的發行者的指令碼之前提示您。 不過,驗證指令碼的簽章並不會消除該指令碼為惡意的可能性。 這只是提供額外的檢查,以將這種可能性降到最低。
  • Default。 設定預設執行原則,其為 Restricted (適用於 Windows 用戶端) 和 RemoteSigned (適用於 Windows Server)。
  • RemoteSigned。 這是 Windows Server 電腦的預設執行原則。 指令碼可以執行,但原則要求從網際網路下載的指令碼和設定檔必須有受信任發行者的數位簽章。 此設定不需要本機電腦上所撰寫指令碼的數位簽章。
  • Restricted。 這是 Windows 用戶端電腦的預設執行原則。 其允許執行個別命令,但不允許指令碼。
  • Unrestricted。 這是非 Windows 電腦的預設執行原則,而您無法對其進行變更。 其允許執行未簽署的指令碼。 此原則會在執行不是來自本機內部網路區域的指令碼和設定之前警告使用者。
  • Undefined。 指出目前範圍中未設定執行原則。 如果所有範圍中的執行原則為 Undefined,則有效的執行原則為 Restricted (適用於 Windows 用戶端) 和 RemoteSigned (適用於 Windows Server)。

若要在 PowerShell 中變更執行原則,請使用下列命令:

Set-ExecutionPolicy -ExecutionPolicy <PolicyName>