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

时间:2010-02-14 10:48:20

标签: windows com powershell 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进程运行

由于

1 个答案:

答案 0 :(得分:3)

来自help add-type

  

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

windowslivewriter.application不是.NET类型。

PowerShell(PSH)直接支持COM对象,您不需要采取任何特殊步骤来加载类型库(TLB) 1 ,只需按{{3}中的说明直接调用方法对于组件。 E.g:

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

启动新的帖子编辑。

总结:你需要先加载TLB。

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


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