我有一個多用戶Access數據庫,每天使用PowerShell腳本壓縮。如果仍有用戶登錄,此腳本無法壓縮數據庫。如果有用戶登錄,我希望能夠識別忘記註銷數據庫並提醒他們註銷的用戶一天結束。查找用戶使用Powershell登錄到Access數據庫
如果我在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」與「3」的參數(一個或多個)::
與所述的OpenSchema線的PS代碼中的錯誤去「對象或提供不能夠執行所請求的操作。」 在FindUsers.ps1:8字符:27 + $ objRs = $ objCon.OpenSchema < < < <([ADODB.SchemaEnum] :: adSchemaProviderSpecific,$ NULL, '{947bb102-5d43-11d1-bdbf-00c04fb92675}') + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:DotNetMethodException
如果我刪除中間$空變量或'替代它的腳本將不會執行,我不知道該命令從VB正確轉換到powershell。我在Google和SO上搜索過,但沒有找到任何解決方案。我需要做什麼才能使用OpenSchema命令?
如果我在VBScript同樣想法的OpenSchema行看起來像:設置RS = cn.OpenSchema(-1, ,「{947bb102-5d43-11d1-bdbf-00c04fb92675}」)並且正常工作。 – KFleschner