Exception Powershell脚本在使用ADSI时返回异常

Exception Powershell脚本在使用ADSI时返回异常,exception,powershell,adsi,Exception,Powershell,Adsi,在WindowsServer2008(32位)上执行Powershell脚本(v1.0)时,我会遇到异常 在删除虚拟目录之前,它使用ADSI搜索虚拟目录 我得到以下例外情况: Exception calling "Find" with "2" argument(s): "Exception from HRESULT: 0x80005008" At line:1 char:29 + $iisMgr.psbase.children.find <<<< ("MyVirtualD

在WindowsServer2008(32位)上执行Powershell脚本(v1.0)时,我会遇到异常

在删除虚拟目录之前,它使用ADSI搜索虚拟目录

我得到以下例外情况:

Exception calling "Find" with "2" argument(s): "Exception from HRESULT: 0x80005008"
At line:1 char:29
+ $iisMgr.psbase.children.find <<<< ("MyVirtualDir", $iisMgr.psbase.SchemaClassName)
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException

(编辑):从几篇博客中,我了解到必须启用IIS6管理兼容性角色服务才能安装ADSI提供程序,并且我已经启用了它,但仍然存在此异常…

是否仅使用一个参数进行尝试

$iisMgr.psbase.children.find("MyVirtualDir")
我不知道有什么,但当我调用一个参数数量不好的方法时,我会出现这种COM错误

只是一些想法:

  • 在进行ADSI交互时是否进行身份验证
  • 我猜您没有按照$vDirPath示例使用全局目录。在任何情况下,都要看一眼
  • 尝试使用提升的用户权限运行Powershell会话(右键单击以管理员身份运行)

根据(IIS5)0x80005008是
E_ADS_BAD_参数
。最后一个参数在Powershell编辑器中返回“IIsWebVirtualDir”。。。不知道为什么它给出了一个错误的参数我使用PowerShell ISE来测试调用,当我调用您的代码段时,我得到一个未处理的异常:问题事件名称:PowerShell NameOfex:PowerShell_ISE.exe FileVersionOfSystemManagementAutomation:6.0.6002.18111 Innermostexception类型:System.AccessViolationExceptionOutermostExceptionType:System.AccessViolationException DeepestPowerShellFrame:tem.Management.Automation.MethodInformation.Invoke DeepestFrame:Interop.UnsafentiveMethods+IAdsContainer.GetObject ThreadName:Pipeli..Usion Thread操作系统版本:6.0.6002.2.0.274.38区域设置ID:1033-无身份验证,-我未使用全局编录(我只打开PowerShell ISE并调用上面的语句,-我已经禁用了UAC,因此不需要这样做,并确保已使用管理员身份的用户仍然存在该错误。您可以添加ADSI身份验证调用的示例吗?找不到特定的身份验证方法:(文档只说您应该是域、架构和企业管理员的一部分,所以我猜上下文是关于如何启动powershell的。另一个想法:使用AppCmd.exe删除虚拟目录如何?我使用虚拟机。虚拟机的主机是Win7,位于域上,但虚拟机不在域上。这应该是错误的原因吗?我也不想这样做。)要更改现有的.ps1脚本,我希望该脚本在我的VM中成功运行。。。
$iisMgr.psbase.children.find("MyVirtualDir")