我正在尝试将脚本从VBS转换为Powershell。我研究过微软文档(http://technet.microsoft.com/en-us/library/ee221101.aspx),但没有找到答案。
VBS脚本实例化COM对象,并按如下方式使用它:
Set obj = CreateObject("COM.ObjName")
Set stringValue = "blah"
obj(stringValue).Metod #need help here我知道如何在PowerShell中创建COM对象,但我不知道如何将obj(stringValue).Method转换为Powershell。
UPD。我发现obj实际上是其他对象的容器(也许是字典?)。
问题转化为:如何从powershell调用COM对象的[]操作符?Visual中的对象浏览器将此运算符的签名显示为:
public virtual type1 this[ref object index] {get; }发布于 2014-10-03 19:12:22
问题解决了。研究中的Com.ObjName似乎是一个集合。因为当我使用"OLE/COM对象查看器“查看它的结构时,我发现它有一个参数化的Item属性。因此,Powershell用这个属性加载了这个对象,但是没有自动为它创建一个索引操作符。那么,在VBScript中是什么样子的:
Set obj = CreateObject("COM.ObjName")
Set stringValue = "blah"
obj(stringValue).Metod #need help here转化为:
$obj = New-Object -ComObject "Com.ObjName"
$stringValue = "blah"
$obj.Item[$stringValue].Method()发布于 2014-10-02 11:51:40
您可以尝试创建对象并将其输送到get成员,这可能会对您有所帮助.例子:
PS>$sch=new-object -ComObject ("Schedule.Service")
PS>$sch |get-member
TypeName : System.__ComObject#{2faba4c7-4da9-4013-9697-20cc3fd40f85}
Name MemberType Definition
---- ---------- ----------
Connect Method void Connect (Variant, Variant, Variant, Variant)
GetFolder Method ITaskFolder GetFolder (string)
GetRunningTasks Method IRunningTaskCollection GetRunningTasks (int)
NewTask Method ITaskDefinition NewTask (uint)
Connected Property bool Connected () {get}
ConnectedDomain Property string ConnectedDomain () {get}
ConnectedUser Property string ConnectedUser () {get}
HighestVersion Property uint HighestVersion () {get}
TargetServer Property string TargetServer () {get} https://stackoverflow.com/questions/26159963
复制相似问题