сценарий Outlook с помощью PowerShell 7

#powershell #outlook

#powershell #outlook

Вопрос:

У меня был скрипт, который я использовал в течение длительного времени с PowerShell 5 для доступа к Outlook. Он использует это:

Add-type -assembly "Microsoft.Office.Interop.Outlook"

Кажется, я не могу найти эквивалент для PowerShell 7 (.NET Core). Кто-нибудь знает, что я могу использовать на его месте? У меня есть сценарий, написанный на 7, для которого я хотел бы использовать Outlook. Спасибо

Комментарии:

1. Разве вы не можете продолжать использовать обычный PowerShell для своего сценария автоматизации Outlook?

2. У меня есть сценарий, написанный на языке 7, для которого я хотел бы использовать Outlook.

3. Добавить-тип -сборку «Майкрософт. Офис. Взаимодействие. Outlook» не работает в PowerShell 7?

4. Попробуйте указать полный путь к библиотеке dll Add-type -assembly "C:WINDOWSassemblyGAC_MSILMicrosoft.Office.Interop.Outlook15.0.0.0__71e9bce111e9429cMicrosoft.Office.Interop.Outlook.dll"

Ответ №1:

Насколько я понимаю, Add-Type в PS7 можно добавлять только сборки .NET Core только по имени, поэтому вам придется найти путь к файлу и использовать -LiteralPath . Вы можете начать с поиска по одному из следующих путей:

 C:WINDOWSassemblyGAC_MSILMicrosoft.Office.Interop.Outlook
C:Program Files (x86)Microsoft OfficerootOffice16ADDINS
 

Вы могли бы поискать последнюю версию с чем-то вроде:

 $SearchPath = 'C:WINDOWSassemblyGAC_MSILMicrosoft.Office.Interop.Outlook'
$SearchFilter = 'Microsoft.Office.Interop.Outlook.dll'
$PathToAssembly = Get-ChildItem -LiteralPath $SearchPath -Filter $SearchFilter -Recurse |
    Select-Object -ExpandProperty FullName -Last 1
 

И добавьте сборку с помощью:

 if ($PathToAssembly) {
    Add-Type -LiteralPath $PathToAssembly
}
else {
    throw "Could not find '$SearchFilter'"
}
 

Комментарии:

1. Добро пожаловать, @GLaisne! Добавление нестандартных сборок по пути также работает в PS 5.x, поэтому этот подход полезен, когда вам нужна перекрестная совместимость.