私は、dirとsubdirを再帰的にループし、その内部にあるすべてのSQLファイルを実行し、成功のために.logファイルに実行を記録し、例外のために1つをログに記録するPowerShellスクリプトを持っています。 PowerShellスクリプトのを行うことになって何を行いますが、CMDウィンドウで、私はこのエラーを参照してください。Get-Content -Rawパラメータのエラー
このラインから
$query = Get-Content -Path $_.FullName -Raw
は、この文は、ループ内で反復あたりそうFullName
変更を実行します。これは私が使っているバージョンです。
Name : Windows PowerShell ISE Host Version : 5.0.10586.117
サンプルスクリプトは、以下の行く:
Get-ChildItem $ScriptFolder -Recurse -Exclude "*Archive*" -Filter *.sql |
sort Directory |
ForEach-Object {
$query = Get-Content -Path $_.FullName -Raw
$result = SQLCMD -S $FullDBServer -E -I -Q $query -d $Database
任意の考え?
新しいpowershellです。あなたの構文では、-Iと-Iは2つのdiff cmdsを表しますか?私はこれをデバッグしている間に別の問題につまずいた。 Sqlcmd:エラー:54行目のコマンド 'go'の近くに構文エラーがあります。 + $ result = SQLCMD -S $ FullDBServer -E -I -Q $ query -d $ Database 問題は私が実行しているスクリプトからgo cmdを使っていることがわかります。同じスクリプトがSSMSでうまく動作し、PowerShellで失敗するのはなぜですか?私はpowershellがデフォルトでquoted identifierの設定を無効にしていることを学びました。明示的にそれをオンにする必要があります(-I)。同じ方法で、私がPowerShellに "Go"のエラーを出さないために使う必要のあるスイッチがありますか? – Sri
'sqlcmd'とそのパラメータ、そしてあなたが観察した振る舞いを説明しているドキュメントにリンクしました。私はあなたにそれを読むつもりはない。 –
私の悪い。それに気付かなかった。ありがとう – Sri