4

私はいくつかの Web アプリケーションの展開タスクを自動化しようとしているので、これを達成するために powershell を使用しようとしています。powershell スクリプトと .bat ファイルがあります。バッチ ファイルは、powershell スクリプトを実行するためだけに存在し、このテキストが含まれています。私はWindows 8 - 64ビットを使用しています。

C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "& '%~dp0\SetupWebServer.ps1' %*

これらのコマンドを実行するpowershellスクリプトにいくつかのコードがあります:

Write-Host "Check for the existence of the Application Pool."
Import-Module WebAdministration
$iisAppPoolName = "SiteName"
$iisAppPoolDotNetVersion = "v4.0"
$iisAppName = "SiteName"

cd IIS:\AppPools\

if (!(Test-Path $iisAppPoolName -PathType Container))
{
     Write-Host "Creating Application Pool"
}

CD IIS:\AppPools\ コマンドを実行すると、次のエラーが表示されます。

cd : 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)).
At line:1 char:1
+ cd IIS:\AppPools\
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [Set-Location], COMException
+ FullyQualifiedErrorId : 
System.Runtime.InteropServices.COMException,Microsoft.PowerShell.Commands.SetLocationCommand

別の PowerShell プロンプトから、IIS:\ に cd できますが、dir コマンドを実行できず、同様のエラーが発生します。私は何が欠けていますか?

4

1 に答える 1

10

指定するSysWOW64ことで、Powershell を強制的に 32 ビット コンテキストで実行します。WebAdministration モジュールは 64 ビット コンテキストのみをサポートします。

解決:

  1. バッチ ファイルが 32 ビットで実行されている場合は、SysNative代わりに使用します。SysWOW64
  2. バッチ ファイルが 64 ビットの場合は、を削除しSysWOW64て標準パスを使用します。
于 2013-09-21T18:58:03.917 に答える