我有一个多用户 Access 数据库,每天使用 powershell 脚本进行压缩。如果仍有用户登录,此脚本无法压缩数据库。如果有用户登录,我希望能够识别忘记注销数据库的用户并提醒他们注销一天结束。
如果我要在 VB 中编写它,它将像这样工作:
Dim cn as ADODB.Connection
Dim rs as ADODB.Recordset
cn.open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=...mdb")
Set rs = cn.OpenSchema(adSchemaProviderSpecific, ,"{947bb102-5d43-11d1-bdbf-00c04fb92675}")
然后循环遍历记录集并获取我想要的信息。
我想做的是将它翻译成 PowerShell,以便它可以使用紧凑的脚本运行。我尝试了以下方法:
$objCon = New-Object -ComObject ADODB.Connection
$objRs = New-Object -ComObject ADODB.Recordset
$objCon.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=...mdb")
$objRs= $objCon.OpenSchema([ADODB.SchemaEnum]::adSchemaProviderSpecific,$null,'{947bb102-5d43-11d1-bdbf-00c04fb92675}')
$objRs.MoveFirst()
然后遍历记录集并找到我需要的信息。
OpenSchema 行上的 ps 代码错误:
使用“3”参数调用“OpenSchema”的异常:“对象或提供者无法执行请求的操作。” 在 FindUsers.ps1:8 char:27 + $objRs= $objCon.OpenSchema <<<< ([ADODB.SchemaEnum]::adSchemaProviderSpecific,$null,'{947bb102-5d43-11d1-bdbf-00c04fb92675}') + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException
如果我删除中间的 $null 变量或将其替换为 '',脚本将不会执行,并且我不知道该命令是否正确地从 VB 转换为 powershell。我在 Google 和 SO 上进行了搜索,但没有找到任何解决方案。我需要做什么才能使用 OpenSchema 命令?