目的

.NET Framework を使って MS Access を操作するための PowerShell 関数は、System.Data.OleDb 名前空間を使用して、OLE DB 接続を介して MS Access データベースにアクセスします。以下は、MS Access データベースに対してクエリを実行する基本的な関数の例です。

PowerShell 関数の例:MS Access データベースからデータを取得

function Get-AccessData {
param (
[string]$databasePath,    # MS Access データベースのパス
[string]$query            # 実行するSQLクエリ
)
# OleDbConnection用の接続文字列を作成
$connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$databasePath;"

# データベースに接続
$connection = New-Object System.Data.OleDb.OleDbConnection($connectionString)

try {
    $connection.Open()

    # クエリを実行
    $command = $connection.CreateCommand()
    $command.CommandText = $query

    # データの読み取り
    $adapter = New-Object System.Data.OleDb.OleDbDataAdapter($command)
    $dataSet = New-Object System.Data.DataSet
    $adapter.Fill($dataSet)

    # データを返す
    return $dataSet.Tables[0]
}
catch {
    Write-Error "Error: $_"
}
finally {
    # 接続を閉じる
    if ($connection.State -eq 'Open') {
        $connection.Close()
    }
}
}

使用方法:

$databasePath = "C:\\path\\to\\your\\database.accdb"
$query = "SELECT * FROM TableName"  # 例: テーブルから全データを取得
$result = Get-AccessData -databasePath $databasePath -query $query

結果の表示

$result | Format-Table

説明:

Get-AccessData 関数:

この関数は、MS Access データベースからデータを取得するためのもので、データベースのパスと実行したい SQL クエリをパラメータとして受け取ります。

接続文字列:

Microsoft.ACE.OLEDB.12.0 プロバイダを使用して MS Access データベースに接続しています。必要に応じて、.mdb ファイルの場合は Microsoft.Jet.OLEDB.4.0 を使用してください。

エラーハンドリング:

try-catch-finally ブロックで接続を管理し、エラーが発生した場合はメッセージを表示し、接続が開いている場合は必ず閉じるようにしています。

この関数は、MS Access データベースからクエリを実行し、取得したデータを PowerShell のオブジェクトとして扱うことができます。クエリの内容を変更することで、SELECT、INSERT、UPDATE、DELETE などの操作が可能です。