お世話になっております。
■関連記事
https://teratail.com/questions/175395
少々引用させていただきます。
現在PowerShellから
sqlファイルに定義されているSELECT文からTSVファイルを出力するpgを作成中です。
PowerShell
1$DBSERVER = "aaaa" 2$DB = "bbbb" 3$ID = "xxxx" 4$PASSWORD = "yyyy" 5$SQLFILE = "C:xxx\yyy\zzz.sql" 6$TSV = "C:aaa\bbb\ccc\ddd.tsv" 7$Result = Invoke-Sqlcmd ` 8-ServerInstance $DBSERVER ` 9-Database $DB ` 10-Username $ID ` 11-Password $PASSWORD ` 12-InputFile $SQLFILE ` 13-Verbose -OutputSqlErrors $true | Export-Csv $TSV -NoTypeInformation -Encoding Unicode -Delimiter "`t"
上記PGにてSQLからTSV出力が可能となりました。
ここで、試しにSQLファイルを修正し、存在しない列を参照する様変更して
実行した結果、コンソール上でエラーメッセージは表示されたのですが、
そのメッセージを保持したいです。
Exception
1Invoke-Sqlcmd : Invalid column name 'XXXXX'. 2発生場所 c:YYYYYYY.ps1:54 文字:8 3+ $Result = Invoke-Sqlcmd ... 4+ CategoryInfo : InvalidOperation: (:) [Invoke-Sqlcmd]、SqlPowerShellSqlExecutionException 5+ FullyQualifiedErrorId : SqlError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand
$Resultは成功時も失敗時もnullが格納されており、
$_.Exceptionもnullでした。
Invoke-Sqlcmdのオプションに不備があるのでしょうか...
ご教授をお願いできればと思います。
何卒よろしくお願い致します。
以下の形にて修正
Powershell
1$Error.Clear() 2 3$DBSERVER = "aaaa" 4$DB = "bbbb" 5$ID = "xxxx" 6$PASSWORD = "yyyy" 7$SQLFILE = "C:xxx\yyy\zzz.sql" 8 9[hashtable]$sqlCmdParam = @{ 10 ServerInstance = $DBSERVER 11 Database = $DB 12 Username = $ID 13 Password = $PASSWORD 14 InputFile = $SQLFILE 15 Verbose = $true 16 OutputSqlErrors = $true 17} 18Invoke-Sqlcmd @sqlCmdParam | Export-Csv $TSV -NoTypeInformation -Encoding Unicode -Delimiter "`t" 19if($Error[0] -ne $null) { 20 #Error[0]をログに書き込む 21}
きっとExport-Csvもスプラッティングで省略できるでしょう、、、時間が出来たら挑戦。
関連記事の回答者を含め、
この場を借りて、回答者の皆様へ御礼申し上げます。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/25 02:48