通过PowerShell加载types库并编写Windows Live Writer脚本

一般来说,我对COM和Windows编程/脚本非常陌生。 我正在做的是脚本Windows Live Writer; 根据文件之前,我可以打电话

$o = New-Object -c WindowsLiveWriter.Application 

我需要首先加载TLB,所以我应该调用add-type命令,不幸的是它失败了:

 PS C:\Users\NoWhereMan> add-type windowslivewriter.application Add-Type : c:\Users\NoWhereMan\AppData\Local\Temp\a7ifbimo.0.cs(1) : A namespace does not directly contain members such as fields or methods c:\Users\NoWhereMan\AppData\Local\Temp\a7ifbimo.0.cs(1) : >>> windowslivewriter.application At line:1 char:9 + add-type <<<< windowslivewriter.application + CategoryInfo : InvalidData: (c:\Users\NoWher...elds or methods:CompilerError) [Add-Type], Exception + FullyQualifiedErrorId : SOURCE_CODE_ERROR,Microsoft.PowerShell.Commands.AddTypeCommand Add-Type : Cannot add type. There were compilation errors. At line:1 char:9 + add-type <<<< windowslivewriter.application + CategoryInfo : InvalidData: (:) [Add-Type], InvalidOperationException + FullyQualifiedErrorId : COMPILER_ERRORS,Microsoft.PowerShell.Commands.AddTypeCommand 

对于它的价值, 我正在运行Windows7 x64

编辑 :x64是关键问题,我需要运行PSH作为一个x86进程

谢谢

Solutions Collecting From Web of "通过PowerShell加载types库并编写Windows Live Writer脚本"

help add-type

将Microsoft .NET Framework类型(类)添加到Windows PowerShell会话。

windowslivewriter.application不是一个.NET类型。

PowerShell(PSH)直接支持COM对象,您不需要采取任何特殊的步骤来加载类型库(TLB) 1 ,只需按组件文档中给出的方法直接调用方法即可。 例如:

 $lw = New-Object -com WindowsLiveWriter.Application $lw.NetPost() 

推出新的文章编辑器。

总结:你不需要首先加载TLB。

在64位Windows下,您可能需要确保您正在运行PSH的32位实例(“x86”)才能执行此操作(具体取决于Live Writer组件是在进程还是在进程中运行)。


1严格来说,这只适用于支持使用IDispatch编写脚本的COM类型,但实际上很少有。