首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBS到Powershell

VBS到Powershell
EN

Stack Overflow用户
提问于 2014-10-02 11:36:48
回答 2查看 919关注 0票数 1

我正在尝试将脚本从VBS转换为Powershell。我研究过微软文档(http://technet.microsoft.com/en-us/library/ee221101.aspx),但没有找到答案。

VBS脚本实例化COM对象,并按如下方式使用它:

代码语言:javascript
复制
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中的对象浏览器将此运算符的签名显示为:

代码语言:javascript
复制
public virtual type1 this[ref object index] {get; }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-03 19:12:22

问题解决了。研究中的Com.ObjName似乎是一个集合。因为当我使用"OLE/COM对象查看器“查看它的结构时,我发现它有一个参数化的Item属性。因此,Powershell用这个属性加载了这个对象,但是没有自动为它创建一个索引操作符。那么,在VBScript中是什么样子的:

代码语言:javascript
复制
Set obj = CreateObject("COM.ObjName")
Set stringValue = "blah"
obj(stringValue).Metod #need help here

转化为:

代码语言:javascript
复制
$obj = New-Object -ComObject "Com.ObjName"
$stringValue = "blah"
$obj.Item[$stringValue].Method()
票数 0
EN

Stack Overflow用户

发布于 2014-10-02 11:51:40

您可以尝试创建对象并将其输送到get成员,这可能会对您有所帮助.例子:

代码语言:javascript
复制
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}     
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26159963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档