【发布时间】:2015-07-14 00:20:33
【问题描述】:
我有一个 COM 对象,其中包含我想从 Powershell 创建和调用的方法。
从源码中我知道方法签名是:
private DataSet MethodName(string connectionString, int userID, string location, int specID)
当我在 Powershell 中创建对象时:
$obj = New-Object -ComObject My.ComObjectClass
$obj | Get-Member
签名看起来像:
MethodName Method _Recordset_Deprecated MethodName (SAFEARRAY(Variant))
所以我创建了一个数组并将其传递给方法:
$MyArgs = "data source=Server;Initial catalog=kickassDB",1234,"flavortown",56
$obj.MethodName([ref]$MyArgs)
但这不起作用。我收到一个错误:
Exception calling "MethodName" with "1" argument(s): "Type mismatch"
我认为我的问题是我的数组充满了常规字符串和整数值,我需要创建 VARIANT,但我不知道如何在 Powershell 中执行此操作。
有什么想法吗?
【问题讨论】:
-
使用此语法创建 $MyArgs,默认创建一个变体数组!如果您只是忽略签名以及 powershell 如何显示它怎么办。如果你只是调用 $Obj.MethodeName("data source=Server;Initial catalog=kickassDB",1234,"flavortown",56) 怎么办?
-
@xMRi 试过了。没用。
-
问题正文中的异常文本几乎是我得到的所有内容。使用“1”参数调用“MethodName”的异常:“类型不匹配”在 U:\testScript.ps1:4 char:15 + $obj.MethodName
标签: powershell com