AWS CodeDeploy Powershell 脚本无法在 IIS 服务器中创建网站和池

AWS CodeDeploy Powershell Script fail to create website & Pool in IIS server

我有一个正在使用 AWS Codedeploy 部署到 EC2 实例的应用程序 运行 Windows 安装了代码部署代理的 Server 2012 R2。

代码修订已成功从 S3 存储桶下载到 EC2 实例,但 PowerShell 脚本抛出错误。

特此告知,在EC2实例中手动执行脚本时运行成功。

这是我的 appspec.yml 和之前的-install.bat

codedeploy-agent-deployments.log

脚本 - \before-install.bat C:\Windows\system32>C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -Command "& {Set-ExecutionPolicy Unrestricted; Import-Module WebAdministration; New-Item iis:\Sites\MySite -bindings @{protocol=\"http\";bindingInformation=\":80:\"} -physicalPath c:\DemoApp\MySite; New-Item IIS:\AppPools\MyPool ; Set-ItemProperty IIS:\Sites\MySite -name applicationPool -value MyPool;}" 新项目:无法检索 cmdlet 的动态参数。检索 具有 CLSID 的组件的 COM class 工厂 {688EEEE5-6A7E-422F-B2E1-6AF00DC944A6} 由于以下错误而失败: 80040154 Class 未注册(HRESULT 异常:0x80040154 (REGDB_E_CLASSNOTREG))。 在 line:1 char:71 + & {Set-ExecutionPolicy 不受限制;导入模块 WebAdministration; 新品我... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~ + CategoryInfo : InvalidArgument: (:) [新项目], ParameterBindin 异常 + FullyQualifiedErrorId:GetDynamicParametersException,Microsoft.PowerShe ll.Commands.NewItemCommand

试试这个脚本:

if ($PSHOME -like "*SysWOW64*")
{
  Write-Warning "Restarting this script under 64-bit Windows PowerShell."

  & (Join-Path ($PSHOME -replace "SysWOW64", "SysNative") powershell.exe) -File `
    (Join-Path $PSScriptRoot $MyInvocation.MyCommand) @args

  Exit $LastExitCode
}

Import-Module WebAdministration; 
New-Item IIS:\AppPools\MyPool;
New-Item iis:\Sites\MySite -bindings @{protocol='http';bindingInformation=':80:'} -physicalPath c:\DemoApp\MySite;
Set-ItemProperty IIS:\Sites\MySite -name applicationPool -value MyPool

参考http://docs.aws.amazon.com/codedeploy/latest/userguide/troubleshooting-deployments.html.