PowerShell スクリプトのヒア文字列で使用したいかなり複雑な SQL クエリがあります。クエリ内で、特定の値を PowerShell 変数に置き換えたいと考えています。here-string で使用される変数を宣言して初期化する必要がある場所を正確に理解しようとしています。
簡単な例:
$SqlQuery = @"
update MyTable
set foo = $bar
where baz = $quux
"@
...
foreach ($part in $parts) {
$bar = $part[0]
$quux = $part[1]
Run-SqlNonQuery $SqlQuery #Run-SqlNonQuery is a funct. that executes the query
}
先頭でヒア文字列を宣言しています。これは、ループのたびに変化する $bar と $quux という 2 つの PowerShell 変数を参照しています。
ただし、スクリプトを実行するとエラーが発生します。SQL トレースを実行すると、PowerShell 変数が PS スクリプトに表示される場所に値がありません。
このようなヒア文字列で呼び出された場合、PowerShell 変数は補間されますか? 変数が初期化されるループ内にヒア文字列全体を入れる必要がありますか? このようなものに適した構造は何ですか?
Windows 7、.Net 4、VS2010 で PowerShell を実行しています。バージョンについては明確ではありません。$Host
戻り値
Name : PowerConsole
Version : 1.0.30222.0
しかし、$PSVersionTable
戻ります
PSVersion 2.0
PSCompatibleVersions {1.0, 2.0}
BuildVersion 6.1.7601.17514