Сообщения об ошибках из Access не достигают PowerShell должным образом - PullRequest
0 голосов
/ 05 сентября 2018

Я вызываю макросы 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, и я не могу получить полезное имя для таблицы / запроса вместо '|'. Любые идеи о том, как я могу исправить эти сообщения об ошибках, чтобы получить имена объектов, на которые они ссылаются, или другой способ дать мне имя объекта? Спасибо.

...