我正在使用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腳本,這些腳本工作正常,但更復雜,它會引發錯誤。
您的構建服務器上可能存在導致這些錯誤的依賴關係。 –
您用什麼用戶來運行jenkins代理,缺少權限會導致問題。 COM對象還具有與其關聯的其他權限。 – JamesD
你能詳細談談這個安東尼嗎?我對詹金斯有點新,以及如何開始糾正這種情況。 – LeChuck