Передайте Outlook.MailMessage в сценарий PowerShell с помощью команды Shell - PullRequest
0 голосов
/ 07 февраля 2019

Я передаю выбранные Outlook.MailMessage свойства из сценария VBA в PowerShell:

Public Sub InvokeMessageParser()

    For Each Item In Application.ActiveExplorer.Selection
        If TypeName(Item) = "MailItem" Then

            Dim MailItem As Outlook.MailItem: Set MailItem = Item

            // arrange
            Dim cmd As String: cmd = "powershell -NoExit -NoProfile -File C:\Users\[user]\Desktop\Invoke-MessageParser.ps1 -Subject """ & MailItem.Subject & """ -Verbose"

            // act
            i = Shell(cmd, vbNormalFocus)

        End If
    Next

End Sub

Invoke-MessageParser.ps1:

param (
    [string]$Subject
)

Write-Host "Subject: $Subject"

, который выводит ожидаемое значение на консоль.

Я бы предпочел пропустить все сообщение, но не смог получить правильный синтаксис:

// arrange
Dim cmd As String: cmd = "powershell -NoExit -NoProfile -File C:\Users\[user]\Desktop\Invoke-MessageParser.ps1 -Message " & MailItem

Invoke-MessageParser.ps1:

param (
    [object]$Message
)
Write-Verbose "Subject: $($Message.Subject)"

Какойв результате на консоль выводится Subject:.

Возможно ли это?

1 Ответ

0 голосов
/ 07 февраля 2019

Вы можете передать строку только через командную строку.Вы не можете передать объект COM.Лучшее, что вы можете сделать, это передать значение свойства MailItem.EntryID и использовать его для открытия объекта по идентификатору записи в дочернем процессе, используя Namespace.GetItemFromID.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...