2016-08-25 46 views
0

我正在使用Powershell 32位編寫一些非常簡單的腳本,它們工作正常。Powershell腳本將無法在Windows上使用Jenkins插件

例如,我想打開Internet Explorer到網頁並開始輸入密鑰。當我在PowerShell ISE中運行它時,以下代碼正常工作。

Add-Type –AssemblyName System.Windows.Forms 
$url = "http://WebAddress" 
$ie = New-Object -com "InternetExplorer.Application" 
$ie.Navigate($url) 

sleep 30 

[System.Windows.Forms.SendKeys]::SendWait("{2}{tab}{H}{E}{L}{L}{O}") 

我已經下載了Windows PowerShell plugin,並通過它執行相同的代碼,並收到以下錯誤:

Building on master in workspace C:\Program Files\Jenkins\workspace\Jenkins Test 
[Jenkins Test] $ powershell.exe -NonInteractive -ExecutionPolicy ByPass "& 'C:\WINDOWS\TEMP\hudson257018662776252417.ps1'" 
New-Object : Creating an instance of the COM component with CLSID {0002DF01-000 
0-0000-C000-000000000046} from the IClassFactory failed due to the following er 
ror: 80004005. 
At C:\WINDOWS\TEMP\hudson257018662776252417.ps1:4 char:17 
+ $ie = New-Object <<<< -com "InternetExplorer.Application" 
    + CategoryInfo   : ResourceUnavailable: (:) [New-Object], COMExcept 
    ion 
    + FullyQualifiedErrorId : NoCOMClassIdentified,Microsoft.PowerShell.Comman 
    ds.NewObjectCommand 

You cannot call a method on a null-valued expression. 
At C:\WINDOWS\TEMP\hudson257018662776252417.ps1:5 char:13 
+ $ie.Navigate <<<< ($url) 
    + CategoryInfo   : InvalidOperation: (Navigate:String) [], RuntimeE 
    xception 
    + FullyQualifiedErrorId : InvokeMethodOnNull 


Exception calling "SendWait" with "1" argument(s): "Access is denied" 
At C:\WINDOWS\TEMP\hudson257018662776252417.ps1:9 char:42 
+ [System.Windows.Forms.SendKeys]::SendWait <<<< ("{2}{tab}{H}{E}{L}{L}{O}") 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : DotNetMethodException 

是否有一個原因,爲什麼喜歡它在PowerShell將我的代碼將無法通過詹金斯工作?我嘗試了一些簡單的echo腳本,這些腳本工作正常,但更復雜,它會引發錯誤。

+0

您的構建服務器上可能存在導致這些錯誤的依賴關係。 –

+0

您用什麼用戶來運行jenkins代理,缺少權限會導致問題。 COM對象還具有與其關聯的其他權限。 – JamesD

+0

你能詳細談談這個安東尼嗎?我對詹金斯有點新,以及如何開始糾正這種情況。 – LeChuck

回答

0

您可能需要設置執行策略一次:https://technet.microsoft.com/library/hh849812.aspx

Set-ExecutionPolicy Unrestricted 

運行PowerShell中的管理和運行命令。使用Unrestricted可能存在安全問題。但是,如果它有效,請閱讀上面的鏈接並找到最適合您的情況的政策。選項是(複製/從鏈接粘貼):

  • 限制。不加載配置文件或運行腳本。受限是默認的執行策略。
  • AllSigned。要求所有腳本和配置文件都由受信任的發佈者簽名,包括您在本地計算機上編寫的腳本( )。
  • RemoteSigned。要求從互聯網下載的所有腳本和配置文件都由受信任的發佈者簽名。
  • 無限制。加載所有配置文件並運行所有腳本。如果運行從Internet下載的未簽名腳本,則在運行之前會提示您提供許可。
  • Bypass。沒有任何東西被阻止,並且沒有警告或提示。
  • 未定義。從當前範圍中刪除當前分配的執行策略。此參數不會刪除在組策略範圍內設置的執行策略 。
+0

實際上,它看起來像插件設置ExecutionPolicy = Bypass ...所以這一定不是。也許是因爲他們也會自動運行它非交互式的。這個腳本可能需要互動嗎? –

相關問題