This question演示如何使用VBA執行此操作,但我希望使用PowerShell執行此操作,以便可以對它進行腳本和計劃。使用PowerShell導出訪問數據庫的所有查詢
我期望的實現應該是相同的,因爲他們都據稱使用相同的COM,但似乎QueryDefs
沒有在COM中定義PowerShell訪問,因爲它什麼都不返回。
# Open file in Access.
$accessCOM = New-Object -ComObject Access.Application
$accessCOM.OpenCurrentDataBase($dbPath, $false)
# get list of queries
$queries = $accessCOM.CurrentDB.QueryDefs # returns nothing.
# export query to file
ForEach ($query in $queries) {
$name = $query.name
$sql = $query.sql
$dest = "$queryDest\$name.sql"
Write-Output $sql > $dest
}
我可以使用.CurrentData.AllQueries
但返回AccessObjects的集合,我不知道如何從他們那裏得到的SQL。有沒有其他方法可以從名稱中獲取QueryDefs或至少SQL?
'$ accessCOM.CurrentDB.Name'會告訴你什麼? – HansUp
「CurrentDb」不是.accdb文件的名稱。 – cheezsteak