我正在尝试使用 Powershell V2.0 以编程方式压缩和修复 MS Access 2007 (.accdb) 数据库。我在下面创建的代码作为最终代码的一部分工作(在此函数运行之前发生了几个备份过程)。
我遇到了麻烦,因为所有数据库都受密码保护,我需要运行脚本而无需用户手动输入密码。到目前为止,这是我的代码:
Param([string]$strDBPath,[string]$strBUPath,[string]$strPwd)
$ErrorActionPreference = "Stop"
function CompactAndRepairDB {
regsvr32 "C:\Program Files\Common Files\Microsoft Shared\DAO\dao360.dll"
regsvr32 "C:\Program Files\Microsoft Office\Office12\Acedao.dll"
regsvr32 "C:\WINNT\assembly\Microsoft.Office.Interop.Access.Dao\12.0.0.__71e9bce111e9429c\Microsoft.Office.Interop.Access.Dao.dll"
$Database = New-Object -ComObject Microsoft.Office.Interop.Access.Dao.DBEngine
$Database.CompactRepair($strDBPath,$strBUPath,"","",";pwd=" + $strPwd)
Remove-Item $strDBPath
Rename-Item $strBUPath $strDBPath
}
CompactAndRepairDB
该代码会引发错误,如下所示:
无法加载 COM 类型 Microsoft.Office.Interop.Access.Dao.DBEngine。在 U:\Scripts\CompactRepairDatabase.ps1:11 char:27 + $Database = New-Object <<<< -ComObject Microsoft.Office.Interop.Access.Dao.DBEngine + CategoryInfo : InvalidType: (:) [New-Object ],PSArgumentException + FullyQualifiedErrorId:CannotLoadComObjectType,Microsoft.PowerShell.Commands.NewObjectCommand
如何加载正确的库/COM 对象以完成操作或者是否有替代方法来实现.CompactRepair
使用密码的方法?谢谢