DCOM(分布式组件对象模型)是Windows操作系统提供的程序接口,支持两台计算机上的组件间的通信,不论它们运行在局域网、广域网还是Internet上。利用这个接口,客户端程序对象都能够向网络中另一台计算机上的服务器程序对象发送请求。
通过以下三条PowerShell命令均可获取系统的完整DCOM列表。
Get-CimInstance Win32_DCOMApplication
Get-CimInstance-class Win32_DCOMApplication|select appid,name
Get-WmiObject-Namespace ROOT\CIMV2-Class Win32_DCOMApplication
如果想快速定位查找某个接口,则可以使用findstr“接口名”命令,注意此处接口名区分大小写。下面以MMC为例来演示,运行结果如图1-85所示。
以管理员身份运行PowerShell,通过下面的命令实例化MMC Application Class,并且调用Get-Member获取所有可用的属性和方法,运行结果如图1-86所示。
图1-85 系统DCOM列表
图1-86 实例化MMC Application Class
Set-Content cmdlet是用于向指定文件写入内容或替换其中内容的功能命令,比如将字节码写入文件的代码如下所示。
首先使用[System.Convert]::FromBase64String()将变量$key的值Base64字符串解码为字节数组,然后调用Set-Content命令将类型为Byte数组的变量$Content保存到名为key.bin的文件中,运行结果如图1-87所示。
图1-87 Set-Content写入文件
当需要将一个二进制文件以文本的形式读取时,可以使用PowerShell来执行Base64编码转换。示例代码如下:
上述PowerShell代码通过[IO.File]::ReadAllBytes($filename)读取指定文件的所有二进制数据,然后使用“|clip”将Base64编码的内容复制到操作系统的剪贴板上,我们在使用时直接用快捷键Ctrl+v粘贴即可,如图1-88所示。
图1-88 二进制文件转换为Base64编码
当需要获取.NET程序集的完整名称时,可以使用GetAssemblyName方法来实现,具体命令如下所示。
运行这个脚本将返回形如“my,Version=1.0.0.0,Culture=neutral,PublicKeyToken= xxxxxx-xxxxxxxxxx”的完整程序集名称,其中my是程序集的名称,1.0.0.0是版本号,Culture=neutral表示没有特定的语言文化,PublicKeyToken是公钥令牌,用于验证程序集的身份。