【问题标题】:Powershell script returns exception when using ADSI使用 ADSI 时,Powershell 脚本返回异常
【发布时间】:2011-03-21 16:12:50
【问题描述】:

在 Windows Server 2008(32 位)上执行 Power shell 脚本 (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

这是代码:

$vDirPath = "IIS://localhost/W3SVC/1/Root"
$iisMgr = [adsi]$vDirPath
$iisMgr.psbase.children.find("MyVirtualDir", $iisMgr.psbase.SchemaClassName)

(编辑):从几个博客中我读到,必须启用 IIS6 管理兼容性角色服务才能安装 ADSI 提供程序,我已经启用它,仍然有这个异常......

【问题讨论】:

  • 根据KB for 2000 (IIS5) 0x80005008 是E_ADS_BAD_PARAMETER
  • 最后一个参数在 Powershell 编辑器中返回“IIsWebVirtualDir”...不知道为什么它给出了一个错误的参数

标签: exception powershell adsi


【解决方案1】:

你尝试只使用一个参数吗?

$iisMgr.psbase.children.find("MyVirtualDir")

我不知道那里,但是当我调用具有错误数量的参数的方法时会出现这种 COM 错误。

日本

【讨论】:

  • 我使用 PowerShell ISE 测试调用,当我调用您的代码 sn-p 时,我得到一个未处理的异常:问题事件名称:PowerShell NameOfExe:powershell_ise.exe FileVersionOfSystemManagementAutomation:6.0.6002.18111 InnermostExceptionType:System。 AccessViolationException OutermostExceptionType:System.AccessViolationException DeepestPowerShellFrame:tem.Management.Automation.MethodInformation.Invoke DeepestFrame:nterop.UnsafeNativeMethods+IAdsContainer.GetObject ThreadName:Pipeli..ution 线程操作系统版本:6.0.6002.2.2.0.274.38 区域设置 ID:1033
【解决方案2】:

只是一些想法:

【讨论】:

  • - 没有身份验证,- 我没有使用全局目录(我只打开 PowerShell ISE 并从上面调用语句,- 我已经禁用了 UAC,因此不需要并且确保经过测试与已经是管理员的用户仍然存在该错误。
  • 您能否添加一个关于 ADSI 的身份验证调用示例?
  • 找不到特定的身份验证方式 :( 文档只说你应该是域、架构和企业管理员的一部分,所以我猜上下文是关于你如何启动 powershell。另一个想法:如何关于使用 AppCmd.exe 删除虚拟目录?
  • 我使用虚拟机。虚拟机的主机是win7,在域中,但虚拟机不在域中。这应该是错误的原因吗?我也不想更改现有的 .ps1 脚本;我希望脚本在我的虚拟机中成功运行...
猜你喜欢
  • 1970-01-01
  • 2018-03-14
  • 2015-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-30
  • 1970-01-01
相关资源
最近更新 更多