PowerShell 技能连载 - 不通过 ProgID 操作 COM 对象

适用于 PowerShell 所有版本

通常在操作 COM 对象时,它们需要将自身在注册表中注册,并且 PowerShell 需要注册的 ProgID 字符串来加载对象。

以下是一个例子:

$object = New-Object -ComObject Scripting.FileSystemObject
$object.Drives

若不使用 New-Object 命令,您也可以用 .NET 方法来实现相同的目的:

$type = [Type]::GetTypeFromProgID('Scripting.FileSystemObject')
$object = [Activator]::CreateInstance($type)
$object.Drives

采用后一种方法,您甚至可以实例化一个未暴露 ProgID 的 COM 对象。您所需的只是 GUID:

$clsid = New-Object Guid '0D43FE01-F093-11CF-8940-00A0C9054228'
$type = [Type]::GetTypeFromCLSID($clsid)
$object = [Activator]::CreateInstance($type)
$object.Drives

PowerShell 技能连载 - 不通过 ProgID 操作 COM 对象

http://blog.vichamp.com/2015/01/02/accessing-com-objects-without-progid/

作者

吴波

发布于

2015-01-02

更新于

2022-07-06

许可协议

评论