Powershell 32ビットでかなり簡単なスクリプトを書いていますが、うまくいきます。PowershellスクリプトはWindowsのJenkinsプラグインでは動作しません
たとえば、インターネットエクスプローラを開いてキーを入力したいとします。次のコードは、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でないように私のコードは、ジェンキンスを介して動作しませんなぜそこに理由です?私は正常に動作したいくつかの単純なエコースクリプトを試しましたが、それ以上の複雑さとエラーをスローします。
ビルドサーバーでこれらのエラーの原因となる依存関係が存在する可能性があります。 –
jenkinsエージェントを実行するためにどのユーザーを使用していますか、権限がないと問題が発生する可能性があります。 COMオブジェクトには、他のアクセス許可も関連付けられています。 – JamesD
あなたはこのアンソニーを詳しく説明できますか?私はジェンキンスにとって少し新しく、状況を改善する方法を始める。 – LeChuck