#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, поэтому этот подход полезен, когда вам нужна перекрестная совместимость.