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()
次に、レコードセットをループして、必要な情報を見つけます。
ps コードは、OpenSchema 行で次のようにエラーになります。
"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 コマンドを使用するには何をする必要がありますか?