Загрузка библиотеки типов через PowerShell и создание сценариев Windows Live Writer - PullRequest
3 голосов
/ 14 февраля 2010

Я очень новичок в программировании и написании сценариев для 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 Ответ

3 голосов
/ 14 февраля 2010

С help add-type:

Добавляет тип (класс) Microsoft .NET Framework в сеанс Windows PowerShell.

, но windowslivewriter.application не является типом .NET.

PowerShell (PSH) напрямую поддерживает COM-объекты, вам не нужно предпринимать никаких специальных шагов для загрузки библиотеки типов (TLB) 1 , просто вызовите методы напрямую, как указано в документации для компонента. E.g.:

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

для запуска нового редактора сообщений.

Краткое описание: вам не необходимо сначала загрузить TLB.

В 64-битной Windows вам может потребоваться убедиться, что вы используете 32-битный экземпляр ("x86") PSH для этого (в зависимости от того, работает ли компонент Live Writer в процессе или вне его).


1 Строго говоря, это относится только к COM-типам, которые поддерживают сценарии с IDispatch, но на практике немногие не поддерживают.

...