Я вызываю макросы Microsoft Access из Windows PowerShell с помощью функции, содержащей следующий код:
$Access = New-Object -com Access.Application
Try {
$Access.OpenCurrentDatabase($File)
} Catch {
$Ex = $_
Write-Host "$($Ex.Exception.Message)"
}
$Success = $false
Try {
$ErrorActionPreference = "Stop"
$Access.DoCmd.RunMacro($Macro)
$Success = $true
} Catch {
$Ex = $_
Write-Host "$($Ex.Exception.Message)"
}
Этот код отлично работает для открытия баз данных и запуска макросов. Однако, если мы случайно обнаружим ошибку, связанную с таблицей / базой данных / объектом, сообщение об ошибке пропустит эту деталь. Вот два примера того, что будет $ ($ Ex.Exception.Message):
Ядро базы данных Microsoft Access не может открыть или записать в файл '|'. Он уже открыт исключительно другим пользователем, или вам необходимо разрешение на просмотр и запись его данных.
Microsoft Access не может найти объект '| 1'.
Я попытался просмотреть все свойства объектов Exception и COMException в PowerShell, и я не могу получить полезное имя для таблицы / запроса вместо '|'. Любые идеи о том, как я могу исправить эти сообщения об ошибках, чтобы получить имена объектов, на которые они ссылаются, или другой способ дать мне имя объекта? Спасибо.