PowerShell

[もどる]


Invoke-Sqlcmd

PowerShell には sqlcmd コマンド相当のコマンドレットが用意されている。ただし、sqlcmd より機能が低いので注意が必要である。

次のサンプルは、Invoke-Sqlcmd コマンドレットを使用して SQL を実行するものである。

Invoke-Sqlcmd -ServerInstance localhost\SQLEXPRESS -Database test -Query "SELECT * FROM dbo.TRAINCLASS;"
 

SQL ファイルを直接指定するオプションがないようなので、Get-Content コマンドレットと組み合わせて SQL ファイルを実行する例を示す。

# Get-Content は -Raw を付けないと System.Object[] 型になるので注意。
$sql = Get-Content -Path c:\temp\Query1.sql -Raw
Invoke-Sqlcmd -ServerInstance localhost\SQLEXPRESS -Database test -Query $sql
 

 

.NET Framework の利用

次のサンプルは System.Data.SqlClient を使ってテーブル内容を取得する例である。

# SQL Server
set-variable -name ConnString -value "Data Source=(localdb)\ProjectsV12;Initial Catalog=AppData;Integrated Security=True;" -option constant
$db = new-object System.Data.SqlClient.SqlConnection($ConnString)
$db.Open > $null
$command = new-object System.Data.SqlClient.SqlCommand
$command.Connection = $db
$command.CommandText = "select * from colors"
$adapter = new-object System.Data.SqlClient.SqlDataAdapter
$adapter.SelectCommand = $command
$dataSet = new-object System.Data.DataSet
$adapter.Fill($dataSet)
$table = $dataSet.Tables[0]
foreach ($row in $table.Rows) {
  write-host $row[0], $row[1]
}
$db.Close > $null