
Accessデータベースからデータを取得するスクリプトです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #引数の値を変数に格納(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() |
データの取得方法は、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
スポンサーリンク