Accessデータベースからデータを取得するスクリプトです。
#引数の値を変数に格納(ID) $id = $args[0] #DBファイル名 $scriptPath = $MyInvocation.MyCommand.Path $currentPath = Split-Path -Parent $scriptPath $db = Join-Path $currentPath "test.accdb" #定数 $adOpenStatic = 3 $adLockOptimistic = 3 #オブジェクト作成 $cnn = New-Object -ComObject ADODB.Connection $rst = New-Object -ComObject ADODB.Recordset #接続 $cnn.Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$db") #SQL $cmd = "SELECT ID, ユーザーID, 名前 FROM T_Users WHERE ID = " + $id #レコードセットOpen $rst.Open($cmd, $cnn, $adOpenStatic, $adLockOptimistic) #先頭レコードに移動 $rst.MoveFirst() #レコードの読取 while($rst.EOF -eq $False) { Write-Host "ID:" $rst.Fields.Item("ID").Value Write-Host "ユーザーID:" $rst.Fields.Item("ユーザーID").Value Write-Host "名前:" $rst.Fields.Item("名前").Value $rst.MoveNext() } #終了 $rst.Close() $cnn.Close()このスクリプトファイルと同じ場所にある「test.accdb」から「T_Users」というテーブルのデータを取得しています。
データの取得方法は、VBAの場合と同じです。
Connectionで接続し、Recordsetでレコードセットを取得しています。
あと、実行する際には、32ビットで実行するか、64ビットで実行するかに気を付けてください。
インストールされているAccessが32ビット用の場合は、32ビットで実行してください。
実行結果
PS C:\work\access> .\GetAccessData.ps1 2 ID: 2 ユーザーID: 100202 名前: 山田太郎
<参考サイト>
https://gallery.technet.microsoft.com/office/a4a0ade2-e856-48ff-9e91-31b4b6356382
スポンサーリンク