【PowerShell】Invoke-SqlcmdによるSQLクエリ実行方法
PowerShellのInvoke-SqlcmdコマンドでSQLServerに接続してSQLクエリを実行します。
<環境>
OS:Windows10(64bit)
PSVersion:v5.1
Database :Microsoft SQL Server 2022 Developer Edition (64-bit)
Invoke-SqlcmdコマンドでSQLクエリ実行
構文
-SQLServer認証でSQLクエリ実行
-Windows認証でSQLクエリ実行
- -ServerInstance
- -Database
- -Username
- -Password
- -Query
接続先のSQL Serverのインスタンス名を指定します。
接続先のデータベース名を指定します。
ログインユーザ名を指定します。Windows認証を使用する場合は省略可能です。
ログインユーザのパスワードを指定します。Windows認証を使用する場合は省略可能です。
実行するSQLクエリを指定します。
Invoke-SqlCmdコマンドを使用すると、指定したSQLクエリがSQL Server上で実行されます。データベース接続や認証情報の指定、SQLクエリの実行結果取得などを簡単に行えます。
スクリプト例
# Select実行
$SelectQuery = "Select Name, Price From dbo.Products Where Price < 10000"
$Products = Invoke-Sqlcmd -ServerInstance "localhost" -Database "TestDB" -Username "User01" -Password "Password01" -Query $SelectQuery
# データ表示(SQLクエリのカラム名でアクセスできます。)
foreach($data in $Products)
{
Write-Output $data.Name
Write-Output $data.Price
}
# Insert実行
$InsertQuery = "Insert Into dbo.Products VALUES ('P0011', 'パソコン', 20000)"
Invoke-Sqlcmd -ServerInstance "localhost" -Database "TestDB" -Username "User01" -Password "Password01" -Query $InsertQuery
# Update実行
$UpdateQuery = "Update dbo.Products Set Price = 30000 Where Id = 'P0011'"
Invoke-Sqlcmd -ServerInstance "localhost" -Database "TestDB" -Username "User01" -Password "Password01" -Query $UpdateQuery
# Delete実行
$DeleteQuery = "Delete From dbo.Products Where Id = 'P0009'"
Invoke-Sqlcmd -ServerInstance "localhost" -Database "TestDB" -Username "User01" -Password "Password01" -Query $DeleteQuery
SqlServerモジュールのインストール
Invoke-Sqlcmdコマンドが認識されない場合は、以下のコマンドを使用してSqlServerモジュールをインストールする必要があります。
すべてのユーザーにSqlServerモジュールをインストールする場合は、管理者権限でPowerShellを起動して以下を実行します。
カレントユーザーにのみSqlServerモジュールをインストールする場合は、PowerShellを起動して以下を実行します。