【发布时间】:2016-06-15 16:28:24
【问题描述】:
This question 演示了如何使用 VBA 进行操作,但我想使用 PowerShell 进行操作,因此可以编写脚本和计划。
我预计实现应该是相同的,因为据称它们都使用相同的 COM,但似乎 QueryDefs 未在 PowerShell 访问的 COM 中定义,因为它不返回任何内容。
# 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。有没有其他方法可以从名称中获取 QueryDef 或至少 SQL?
【问题讨论】:
-
$accessCOM.CurrentDB.Name告诉你什么? -
"CurrentDb" 这不是 .accdb 文件的名称。
标签: powershell ms-access com