このスクリプトから出力が得られません。エラーメッセージさえありません...私の問題は、WHERE句での変数の使用だと思います。この $(item) をバックティックでエスケープしようとしましたが、進歩がありません。誰かが私が間違っていることを理解するのを手伝ってくれますか?
$dbserver = "AHDC389"
$dbase = "FOO"
$table = "$($dbase).dbo.BAR"
Import-Module “sqlps” -DisableNameChecking
$myArray = @(Invoke-Sqlcmd "Select myColumn From adifferentserver.dbo.[mylookuptable]") | select-object -expand myColumn
ForEach ($item in $myyArray) {
Invoke-Sqlcmd "Select * FROM $table Where FacilityID='$(item)' "
}
アップデート:
したがって、以下のようにスクリプトを変更すると、 Where= の変数が展開されていないようです。
$dbserver = "AHDC389"
$dbase = "FOO"
$table = "$($dbase).dbo.BAR"
Import-Module “sqlps” -DisableNameChecking
$myArray = @(Invoke-Sqlcmd "Select myColumn From adifferentserver.dbo.[mylookuptable]") | select-object -expand myColumn
$myQuery = "Select * FROM {0} Where FacilityID='{1}'" -f $table, $item
ForEach ($item in $mArray) {
Write-Host $myQuery
#Invoke-Sqlcmd $myQuery
}
$myQuery の値がコンソールに返され、$item が展開されていないことを示します。
Select * FROM FOO.dbo.BAR Where Facility=''