2014-10-02 8 views
1

VBS에서 Powershell로 스크립트를 변환하려고합니다. Microsoft 설명서 (http://technet.microsoft.com/en-us/library/ee221101.aspx)를 살펴 보았지만 답변을 찾을 수 없습니다.VBS to Powershell

VBS 스크립트는 COM 개체를 인스턴스화하고이처럼 사용

Set obj = CreateObject("COM.ObjName") 
Set stringValue = "blah" 
obj(stringValue).Metod #need help here 

내가 PowerShell의 COM 개체를 만드는 방법을 알고 있지만, 나는 파워 쉘에 obj(stringValue).Method를 변환하는 방법을 모르겠어요.

UPD. 나는 obj이 실제로 다른 객체 (아마도 사전?)의 컨테이너라는 것을 알아 냈습니다.

UPD 2. 질문이 : powershell에서 COM 개체의 [] 연산자를 호출하는 방법?

public virtual type1 this[ref object index] {get; } 

답변

0

문제가 해결되었습니다. 연구중인 Com.ObjName은 컬렉션으로 보입니다. "OLE/COM Object Viewer"를 사용하여 구조를 살펴볼 때 매개 변수가있는 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() 
0

당신은 객체와 파이프가 얻을 - 회원 수를 만들려고 할 수 있습니다, 그것은 당신을 도울 수 있습니다 : Visual Studio에서 개체 브라우저는이 연산자의 서명을 표시합니다. 예 :

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

죄송합니다, 어떻게 괄호 연산자'()'를 호출 할 때 호출되는 어떤 방법을 확인할 수 있습니까? – GKalnytskyi

+0

나는 정말 모르겠다. 나는 com 객체에 의존한다고 생각한다. –

+0

@Kayasax : 시도해 보라.'$ comobj.method.overloaddefinitions' –