2010-08-17 32 views
3

我正在嘗試編寫一個PowerShell腳本來自動執行我的IIS網站部署。我試圖運行我的Windows Server 2008 R2的計算機上的腳本,在32位中:針對IIS的Windows PowerShell管理單元在32位上失敗?

C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe 

每當我運行一個WebAdministration命令,像這樣:

Get-Website -Name "MYWebsite" 

我得到一個錯誤像這樣:

Get-Website : Retrieving the COM class factory for component with CLSID {688EEE 
E5-6A7E-422F-B2E1-6AF00DC944A6} failed due to the following error: 80040154. 
At line:1 char:12 
+ Get-Website <<<< -Name "MyWebsite" 
    + CategoryInfo   : NotSpecified: (:) [Get-Website], COMException 
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException,Micr 
    osoft.IIs.PowerShell.Provider.GetWebsiteCommand 

切換到PowerShell.exe的64位版本可以解決這個問題,但使它不可能對我來說,還可以使用微軟的Team Foundation Server 2008的電動工具PSSnapin,這是一個沒有-G o對我來說。

任何想法如何克服這一點?提前致謝。

+0

這是一個明確的答案,爲我解決了這個問題 - https://stackoverflow.com/a/6872000/852806 – HockeyJ 2017-11-21 13:56:03

回答

-1

只是爲了連接點。 TFS Power Tools 2008 Powershell Snapin won't run in on 64-bit in Windows 2008 R2

「微軟的徐子淇香港還跟我提供了針對此問題的解決方法的全部細節可以在這裏找到在MSDN TFS PowerTools的論壇::http://social.msdn.microsoft.com/Forums/en-US/tfspowertools/thread/a116799a-0476-4c42-aa3e-45d8ba23739e/?prof=required中的另一個主題「urig」回答了自己的問題

解決方法是如下,工作很適合我:

請保存以下內容,並保存爲* .reg文件,並導入到註冊表(只需雙擊* .reg文件,然後單擊確定雙)

Windows註冊表編輯器版本5.00

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ PowerShellSnapIns \ Microsoft.TeamFoundation.PowerShell]「PowerShellVersion」=「2.0」「Vendor」=「Microsoft Corporation」「Description」=「這是一個PowerShell管理單元包括Team Foundation Server cmdlet。「」VendorIndirect「=」Microsoft.TeamFoundation.PowerShell,Microsoft「」DescriptionIndirect「=」Microsoft.TeamFoundation。PowerShell,這是包含Team Foundation Server cmdlet的PowerShell管理單元。「」Version「=」10.0.0.0「」ApplicationBase「=」C:\ Program Files(x86)\ Microsoft Team Foundation Server 2010 Power Tools「」 AssemblyName「=」Microsoft.TeamFoundation.PowerTools.PowerShell,Version = 10.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a「」ModuleName「=」C:\ Program Files(x86)\ Microsoft Team Foundation Server 2010 Power Tools \ Microsoft。 「TeamFoundation.PowerTools.PowerShell.dll」「CustomPSSnapInType」=「Microsoft.TeamFoundation.PowerTools.PowerShell.TFPSSnapIn」

+0

不,其他問題的答案在這裏不相關。一個是關於TFS的PowerShell管理單元不能在x64下工作;這是關於IIS模塊不能在x86下工作的WOW64。容易混淆,但沒有。 – piers7 2011-08-23 07:41:43

4

運行:

C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe 

實際加載32位版本的的PowerShell ;-)

顯然,這不是你想要的。運行system32中的版本以獲取64位版本。對真的。

您可以驗證這一點,如:

ps> [intptr]::size 
4 

如果返回4,它是32位。 64位的PowerShell將返回8

-Oisin

+1

我認爲他遇到的問題是他想使用TFS Snapin(僅限32位)與*出現*的WebAdmin模塊一起使用,僅爲64位。 – 2010-08-17 22:37:33

2

有一兩件事你可以嘗試是[287]莪說加載了一個64位的PowerShell,然後使用啓動工作-RunAs32執行加載的TFS PowerTools的腳本管理單元並根據需要執行TFS cmdlet。確保輸出後臺作業中運行的命令所需的信息。使用Wait-Job等待它完成,然後使用Receive-Job從32位端獲取數據返回到主要的64位PowerShell會話,例如

PS> [IntPtr]::Size 
8 
PS> $job = Start-Job { [intptr]::size } -RunAs32 
PS> Wait-Job $job 

Id    Name  State  HasMoreData  Location  Command 
--    ----  -----  -----------  --------  ------- 
3    Job3  Completed True   localhost [intptr]::size 


PS> Receive-Job $job 
4 
+0

再次感謝您爲我設置直Keith。我編輯了我的問題以反映您的更正。我仍然不知道如何讓IIS PSProvider和TFS Power Tools PSSnapin一起工作。有任何想法嗎? – urig 2010-08-18 08:47:05

+0

我知道無法在* same * PowerShell會話中加載32位管理單元作爲64位管理單元。除了我的答案中解釋的使用32位背景作業之外。 – 2010-08-18 15:17:46

1

對於未來的發現,我想補充一點,你應該再次檢查你如何啓動powershell 。我得到了同樣的錯誤,並且無法弄清楚爲什麼這些解決方案都是參考使用64位版本,當時我認爲我已經是這樣了。

事實證明,因爲我正在使用第三方32位啓動器運行powershell,儘管從system32文件夾啓動,powershell仍然回落到32位可執行文件。感謝x0n確認我正在使用的版本的方法,因爲這將我引導至我的解決方案。

相關問題