我正在尝试使用QuickTest.Application和QuickTest.RunResultsOptions COM对象,但是当我以这种方式访问它们时,我没有获得官方帮助文件中列出的所有成员。
PS> $app = New-Object -ComObject QuickTest.Application -Strict
PS> $app | Get-Member
例如,我知道Launch()
存在,可以从vbscript中使用它。
Dim app
Set app = CreateObject("QuickTest.Application")
app.Launch
答案 0 :(得分:1)
仅仅因为Get-Member没有显示它们并不意味着它们在COM对象中不存在。您将不得不找到一些文档来查看成员名称以及所需的参数。这不是.NET对象的问题,因为它始终具有可用于描述类型和类型成员签名的元数据。 PowerShell并不总是具有COM对象的此信息。
答案 1 :(得分:1)
此外,PowerShell不会将COM对象强制转换为接口,这使得我使用的某些COM API上的一堆方法不可见。我实际上有一个COMObjects.Types.ps1xml文件,我在我的个人资料中导入:
Update-TypeData -PrependPath "(Split-Path $Profile)\COMObject.Types.ps1xml"
实际的types.ps1xml文件是on PoshCode,它将GetProperty / SetProperty / InvokeMethod成员添加到COM对象,原因如下:访问Powershell不可见的成员