【发布时间】:2013-01-14 01:16:48
【问题描述】:
我需要将 Powershell 脚本转换为 C#。
Powershell 脚本访问 Windows 部署服务 COM 对象:
$wdsObject = New-Object -ComObject WdsMgmt.WdsManager
$wdsServer = $wdsObject.getWdsServer("Localhost")
[...]
是否可以在 C# 中访问这些 COM 对象?
我在 Visual C# 中找不到相应的 COM 对象引用。
我尝试将 System32 中的 wdsmgmt.dll 添加为 C# 项目中的引用,但这不起作用。否则我很困惑。
编辑:
对评论 1 的回答: Best way to access COM objects from C#
相关的 COM 对象未在参考文献中列出。我已经浏览了大约 5 次列表,以确保我不会错过它。 有没有办法让 COM 对象出现在 C# 的 COM 引用列表中?
对评论 2 的回答(什么不起作用): 尝试添加 wdsmgmt.dll 显示如下错误:
Please make sure the file is accessible, and that it is a valid assembly or COM component.
该文件是可访问的,但在 C# 眼中它似乎不是一个有效的 COM 组件。
在注册表中搜索 WdsMgmt 显示 COM 对象至少以某种方式存在:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{CD583E47-B079-4025-A799-5F951D016D3E}
也许改写后的问题是:
当我知道它在 Powershell 中的名称时,如何将 COM 对象引用添加到 C#?
【问题讨论】:
-
看看这对你有没有帮助stackoverflow.com/questions/635839/…
-
“那行不通”:好的,您到底尝试了哪些方法,以及在什么方面没有奏效?
-
感谢您的 cmets,我已经编辑了我的问题以反映您的意见。
-
我认为
wdsmgmt.dll是一个 MMC 管理单元。您可能只能通过 C++ 访问此功能。这可能帮助:msdn.microsoft.com/en-us/library/bb530729(v=VS.85).aspx(所有代码示例都在 C++ 中)
标签: c# powershell com-interop comobject