Ms-Access

如何信任通過 PowerShell 訪問的文件,以便我可以觸發我的數據庫導出 marcos

  • March 21, 2018

長話短說,我正在使用 PowerShell 自動執行從訪問 PostgreSQL 的夜間數據庫轉換。

以更基本的形式,腳本執行以下操作。

  1. 將 .accdb 文件複製到本地文件夾
  2. 在 .accdb 中觸發一個宏,將數據導出到 Postgres

程式碼看起來像這樣。文件位置和名稱已更改。省略了一些數據庫清理宏,因為額外的步驟並不真正相關並且會遇到同樣的問題。

$CopyLocation = "C:\Copy.accdb"
$SourceLocation = "C:\Source.accdb"
Add-Type -AssemblyName Microsoft.Office.Interop.Access
$MsAccess = New-Object -ComObject Access.Application
$MsAccess.OpenCurrentDatabase($CopyLocation)
$MsAccess.Run("ExportToPostgreSQL")
$MsAccess.Quit()

所以我遇到的問題是在複製和宏執行之間。由於文件不是“受信任的”,因此宏的執行失敗。如果我將腳本執行到副本,然後手動打開訪問並點擊啟用內容按鈕。然後我可以從 powershell 觸發宏。

有沒有一種方法可以信任文件並從 powershell 中啟用內容?

Microsoft Office 文件(包括 Microsoft Access .accdb 數據庫)需要位於“受信任”位置,以便在無需使用者干預的情況下執行宏和 VBA 功能。

通過更改系統系統資料庫將所需的目標位置添加到受信任位置列表中:

HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Access\Security\Trusted Locations

有關更多詳細資訊,請參閱此 StackOverflow文章。

引用自:https://dba.stackexchange.com/questions/201908