Powershell新建Web应用程序

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

New-WebApplication -Name 'testApp' -Site 'Default Web Site' -PhysicalPath c:\test -ApplicationPool DefaultAppPool 

这是test.ps1文件的内容。当我运行.\test.ps1时,我收到以下错误:

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

这个错误消息并没有帮助我解决问题。您有什么想法可以获得更好的错误消息吗?感谢您的阅读!


有关此问题的最终解决方案吗? - Kiquenet
2个回答

55

我曾经遇到过完全相同的问题,因为我的程序调用了错误版本的PowerShell。我不确定,但我认为当你有一个x86程序时,它会调用x86版本的PowerShell,这将导致失败。

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

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

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

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

从32位进程内部使用 C:\Windows\SysNative\WindowsPowerShell\v1.0\powershell.exe 将会得到 64位版本的 PowerShell。而从64位进程内部使用它将会报错“文件未找到”。


1
我运行了x86,问题得到了解决 - C:\Windows\System32\WindowsPowerShell\v1.0\ - Nick Josevski
3
在x64操作系统中,“System32”实际上不是为32位组件准备的,而是“SysWOW64”。在64位系统上,“SysNative”路径指向的内容可供32位进程使用,并允许其调用64位PowerShell。 - Mike
我建议您使用"%SystemRoot%\SysWoW64\WindowsPowerShell\v1.0\powershell.exe"来运行64位版本的PowerShell。 - Tom Hall
6
Tom Hall说:SysWoW64目录包含PowerShell的32位版本。 - Castrohenge
这也是我的问题,但不幸的是我使用的是以32位模式运行的Jenkins来启动我的PowerShell命令。我需要安装64位Java运行时环境,以便Jenkins以64位模式运行,然后选择64位版本的Powershell来运行。 - mattferderer

3

将项目解决方案构建属性中的平台目标更改为“x64”对我很有帮助:

配置页面截图


欢迎提供解决方案的链接,但请确保您的答案即使没有链接也是有用的:在链接周围添加上下文,以便其他用户了解它的内容和原因,然后引用您链接的页面中最相关的部分,以防目标页面不可用。仅仅提供链接的答案可能会被删除。 - Alessio
@Alessio 他们并没有链接到外部资源,而是上传了一个与他们解决方案相关的窗口截图。在我看来,这是一个有用的答案。 - Das_Geek
谢谢@Alessio,但由于我是新手,StackOverflow限制我上传图片,直到我累积了10个点或赞才可以。我认为随着对这个平台的更多使用,我的答案会越来越好。 - Raj Patel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接