2014-07-02 237 views
4

我試圖從Jenkins運行PowerShell腳本,但它似乎完全忽略了執行策略!出現這種情況要麼直接執行powershell.exe,或使用PowerShell pluginJenkins執行PowerShell腳本

其他信息:

詹金斯運行作爲Windows服務(使用本地系統賬戶,非交互)。連接到該服務器,並檢查執行政策的確RemoteSigned

PS C:\> whoami 
nt authority\system 

PS C:\> Get-ExecutionPolicy 
RemoteSigned 
PS C:\> 

但是,運行詹金斯時所建,這是情況並非如此。這裏有一個生成步驟內部執行Get-ExecutionPolicy -List的輸出:

d:\workspace\test-job>powershell Get-ExecutionPolicy -list 
    Scope       ExecutionPolicy 
    -----       --------------- 
    MachinePolicy     Undefined 
    UserPolicy     Undefined 
    Process      Undefined 
    CurrentUser     Undefined 
    LocalMachine     Undefined 

我也試圖從構建步驟,沒有明確設置它。

我錯過了什麼?

回答

8

經過兩個多小時拉我的頭髮,問題是x86/x64!

原來,Set-ExecutionPolicy x64(默認)PowerShell對x86設置沒有影響!

Jenkins是一個32位進程,從Windows服務運行 - 它執行x86 PowerShell!

此外,x86 PowerShell的Modules目錄位於%systemroot%\SysWow64\WindowsPowerShell\1.0\Modules之下,這是另一個需要記住的重要事實!

+0

你的回答也讓我意識到我需要爲x86進程設置單獨的註冊表值。 – OttPrime