使用作業系統內建的 Powershell 整合指令碼工具編輯指令碼
Windows 2008 r2 預設不會自動安裝,可透過指令碼新增或透過 UI管理工具加入
開啟Powershell工具執行已下指令 安裝 [ Powershell整合指令碼環境(ISE)]
Import-Module ServerManager
Add-WindowsFeature PowerShell-ISE
或透過 UI工具介面
伺服器管理原=>功能結點中選"新增功能"
勾選WindowsFeature PowerShell 整合指令碼環境ISE即可
第一次在電腦上啟動 Windows PowerShell 時,可能會出現錯誤訊息。
例如,使用 Powershell 執行 D:\Temp\run.ps1指令檔
檔案內的指令碼
write-host "Hi Sandy ~"
或使用PowerShell ISE工具執行以下指令碼,出現錯誤訊息
上述原因 為PowerShell的執行原則為 Restricted (預設值)
你可以使用以下語法確認目前出伺服器使用的執行原則
Get-ExecutionPolicy
執行原則可以設置不同級別的系統上。若要查看不同級別的執行原則,可使用以下語法
Get-ExecutionPolicy -List | Format-Table -AutoSize
- Restricted (預設執行原則):允許執行互動式命令,無法執行所有的指令碼檔案,包括格式化和組態檔 (.ps1xml)、模組指令碼檔案 (.psm1) 和 Windows PowerShell 設定檔 (.ps1)。
- RemoteSigned:
指令碼可以執行。 從網際網路下載的指令碼和組態檔都必須有受信任發行者的數位簽章 (包括由電子郵件程式和立即訊息程式所下載)。 已在本機電腦上執行及撰寫的指令碼 (並非從網際網路所下載) 不需要數位簽章。 執行已簽署但惡意的指令碼會有風險 - AllSigned
指令碼可以執行。所有的指令碼和組態檔都需經過受信任的發行者簽署,包括本機電腦上撰寫的指令碼在內。 在執行來自尚未分類為受信任或不受信任之發行者的指令碼之前,對您進行提示。 執行來自網際網路以外來源的未簽署指令碼以及已簽署 (但居心不良) 的指令碼會有風險。 - Unrestricted
可以執行未經簽署的指令碼 (執行惡意的指令碼會有風險)。 在執行從網際網路下載的指令碼和組態檔之前,對使用者提出警告 - Bypass
不會封鎖任何項目,而且沒有警告或提示。 在這個執行原則所針對的組態中,Windows PowerShell 指令碼是建立來提供較大的應用程式使用,或是做為本身具有安全性模型之程式的基礎。 - Undefined
目前的範圍中沒有設定執行原則。 如果所有範圍中的執行原則是 Undefined,則有效的執行原則為 Restricted,這是預設的執行原則。
若要修改執行原則,使用
Set
-ExecutionPolicy
指令修改,例如將執行原則改為RemoteSigned
Set
-ExecutionPolicy RemoteSigned
若不想修改伺服器的執行原則,這裡 介紹了15種方法避開這類錯誤訊息
例如,強制指定要執行的檔案使用 Unrestricted 原則
PowerShell.exe -ExecutionPolicy UnRestricted -File D:\Temp\run.ps1
參考:
Using the Set-ExecutionPolicy Cmdlet
15 Ways to Bypass the PowerShell Execution Policy
How to Allow the Execution of PowerShell Scripts on Windows7
http://www.dotblogs.com.tw/gelis/archive/2010/10/23/18532.aspx