Powershell New-WebApplication

fun*_*oul 29 powershell iis-7

[Void][Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration")

New-WebApplication -Name 'testApp' -Site 'Default Web Site' -PhysicalPath c:\test -ApplicationPool DefaultAppPool 
Run Code Online (Sandbox Code Playgroud)

这是test.ps1的内容.当我运行.\ test.ps1时出现以下错误.

New-WebApplication:无法检索cmdlet的动态参数.由于以下错误,检索具有CLSID {688EEEE5-6A7E-422F-B2E1-6AF00DC944A6}的组件的COM类工厂失败:80040154.在C:\ code\work\users\mchevett\test.ps1:6 char:19 + New-WebApplication <<<< -Name'testApp'-Site'默认网站'-PhysicalPath c:\ test -ApplicationPool DefaultAppPo ol + CategoryInfo:InvalidArgument:(:) [New-WebApplication],ParameterBindingException + FullyQualifiedErrorId:GetDynamicParametersException, Microsoft.IIs.PowerShell.Provider.NewWebApplicationCommand

此错误消息对我没有任何帮助.任何想法如何获得更好的错误消息?谢谢阅读!

小智 46

我遇到了完全相同的问题,因为我从我的程序中调用了错误版本的PowerShell.我不确定这一点,但我认为当你有一个x86程序时,它会调用PowerShell的x86版本,但失败了.

要专门使用32位版本,请从您的程序中调用此版本:

C:\Windows\SysWoW64\WindowsPowerShell\v1.0\powershell.exe
Run Code Online (Sandbox Code Playgroud)

要使用64位版本(在64位操作系统上),请从程序中调用此版本:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Run Code Online (Sandbox Code Playgroud)

C:\Windows\SysNative\WindowsPowerShell\v1.0\powershell.exe在32位进程内使用将为您提供64位PowerShell.在64位进程中使用它将为您提供文件未找到的错误.

  • Tom Hall - SysWoW64目录包含32位版本的PowerShell. (6认同)
  • 在x64操作系统上,`System32`实际上不是32位组件,`SysWOW64`是.答案中指出的`SysNative`路径可用于64位系统上的32位进程,并允许它调用64位PowerShell. (3认同)