4

IIS Web サイトの展開を自動化する PowerShell スクリプトを作成しようとしています。32 ビット環境の Windows Server 2008 R2 マシンでスクリプトを実行しようとしています。

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 ビット バージョンに切り替えると、この問題は解決しますが、Microsoft Team Foundation Server 2008 Power Tools PSSnapin も使用できなくなります。

どうすればこれを克服できますか?前もって感謝します。

4

5 に答える 5

7

ランニング:

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

実際には、powershell の32 ビットバージョンをロードします ;-)

これは明らかにあなたが望むものではありません。system32 でバージョンを実行して、64 ビット バージョンを取得します。はい、そうです。

これは次のように確認できます。

ps> [intptr]::size
4

4 を返す場合は、32 ビットです。64 ビットの PowerShell は 8 を返します。

-オイシン

于 2010-08-17T15:06:22.787 に答える
3

Oisin が言うように 64 ビット PowerShell をロードしてから、Start-Job -RunAs32 を使用して、TFS PowerTools スナップインをロードし、必要に応じて TFS コマンドレットを実行するスクリプトを実行することをお試しください。バックグラウンド ジョブで実行されるコマンドから必要な情報を必ず出力してください。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
于 2010-08-17T22:39:59.123 に答える
1

将来これを見つけた人のために、powershell の起動方法を再確認する必要があることを付け加えたいと思います。私は同じエラーを受け取っていましたが、解決策がすべて64ビットバージョンの使用に関連していた理由を理解できませんでした。

サードパーティの 32 ビット ランチャーで powershell を実行していたため、system32 フォルダーから起動されたにもかかわらず、powershell が 32 ビットの実行可能ファイルにフォールバックしていたことがわかりました。私が使用していたバージョンを確認する方法について x0n に感謝します。これにより、解決策にたどり着きました。

于 2012-08-20T19:21:45.933 に答える
0

ドットをつなぐだけ。「urig」は、別のトピックで彼自身の質問に答えました 。TFSPower Tools 2008 Powershell Snapinは、Windows2008R2の64ビットでは実行されません。

「MicrosoftのCathyKongは、この問題の回避策を提供してくれました。詳細については、MSDN TFS PowerToolsフォーラム(http://social.msdn.microsoft.com/Forums/en-US/ )を参照してください。 tfspowertools / thread / a116799a-0476-4c42-aa3e-45d8ba23739e /?prof = required

修正は次のとおりで、私にとってはうまくいきました。

次のコンテンツを保存して*.regファイルとして保存し、レジストリにインポートしてください(* .regファイルをダブルクリックし、[OK]をダブルクリックします)

Windowsレジストリエディタバージョン5.00

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ PowerShellSnapIns \ Microsoft.TeamFoundation.PowerShell] "PowerShellVersion" = "2.0" "Vendor" = "Microsoft Corporation" "Description"="これはチームを含むPowerShellスナップインですFoundationServerコマンドレット。」"VendorIndirect" = "Microsoft.TeamFoundation.PowerShell、Microsoft" "DescriptionIndirect" = "Microsoft.TeamFoundation.PowerShell、これは、TeamFoundationServerコマンドレットを含む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、カルチャー=ニュートラル、

于 2010-12-11T02:26:19.433 に答える