0

我在我試圖用停在IIS網站中的example.ps1文件超炫的WebItem「somesite」命令,當我在PowerShell命令窗口中運行這一點,工作正常,但是當我嘗試使用詹金斯PowerShell的插件調用同一個文件,我得到下面的異常詹金斯PowerShell的插件類沒有註冊的錯誤在Windows Server 2008

Stop-Webitem : Retrieving the COM class factory for component with CLSID 
{688EEEE5-6A7E-422F-B2E1-6AF00DC944A6} failed due to the following error: 
80040154 Class not registered (Exception from HRESULT: 0x80040154 
(REGDB_E_CLASSNOTREG)). 

我用Google搜索,發現問題出在插件調用PowerShell和註冊表問題的x86版,但不能找到解決辦法。任何幫助表示讚賞。

+0

FYI ExecutionPolicy設置爲RemoteSigned。 – Sheiky 2014-12-03 11:23:00

+0

任何可以啓動和停止iis網站的工作也是受歡迎的。 – Sheiky 2014-12-03 12:49:26

回答

0

我無法修復上述問題,但我發現了一個變通方法來運行我的PowerShell腳本, 我寫了一個Ant任務如下圖所示

<project name="tester"> <target name="IISreset" description="Resets the IIS website" > <exec executable="powershell" failonerror="true" output="iisout.log"> <arg line="-ExecutionPolicy RemoteSigned" /> <arg line="-File D:\test\reset.ps1" /> </exec> </target> </project>

保存爲ps.xml文件,並從詹金斯我使用「調用Ant」作爲構建步驟,並通過了所需的參數並完成。工作順利!

在這樣做之前,我還嘗試過在jenkins中執行「windows批處理命令」buildstep,並給出了以下命令powershell powershell -NoExit -File c:\scripts\script.ps1即使這對我也不起作用。所以最後決定堅持Ant任務。

如果有人遇到解決jenkins Powershell插件問題的解決方案,請分享它。

希望以上的解​​決方案可以幫助如果有人面臨類似的問題。

+0

幾乎浪費了15個小時的時間在線尋求有關這個問題的幫助,沒有找到任何解決辦法。 – Sheiky 2014-12-04 07:45:07

0

因爲它運行PowerShell(x86),而不是PowerShell 64位。 REF: http://forums.asp.net/t/1119052.aspx?Retrieving+COM+class+factory+failed+due+to+the+following+error+80040154

的VSS互操作是受管組件使用32位框架和DLL包含一個32位的COM對象。如果您在64位環境中運行此COM DLL,您將收到錯誤消息。

我想你正在用32位java(buildin java)運行jenkins。 你只需要配置jenkins.xml來使用64位java,它應該調用正確版本的powershell。 (該解決方案適用於我)