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
スポンサーリンク