インタラクティブな SQL-Command-Line-Utility を介してデータベースに接続しています。SQL コマンドを実行しているときに、出力を別の Power Shell コマンドレット (out-gridview など) にパイプしたいと考えています。
たとえば、Sybase ASE データベースに接続し、次のようにログインするとします。
C:\users\user>isql -U<user> -S<SI>
[password]:
1>use master
2>go
1>SELECT * FROM sysusers
2>go | out-gridview
out-gridview へのパイプやその他のコマンドレットは機能しています。それでも > 経由で出力をファイルにリダイレクトできますが、isql-command-line-utility で事前に実装されていると思います。
このようなものをパイプする方法を知っている人はいますか? このようなスクリプトがあることはよく知っています
$query="select * from syslogins"
$conn=New-Object System.Data.Odbc.OdbcConnection
$conn.ConnectionString= "driver={Adaptive Server Enterprise};
dsn=SERVER_NAME;db=master;na=IP,PORT;uid=SOMEUSER;pwd=******;"
$conn.open()
$cmd=new-object System.Data.Odbc.OdbcCommand($query,$conn)
$cmd.CommandTimeout=30
write-host $query
$ds=New-Object system.Data.DataSet
$da=New-Object system.Data.odbc.odbcDataAdapter($cmd)
write-host $ds
$da.fill($ds)
$ds.Tables[0] | out-gridview
$conn.close()
しかし、パスワードをスクリプト内に平文で保存したくありません。セッションにログインしてコマンドを実行し、情報をパイプします。