我没有从这个脚本中得到任何输出。甚至没有错误消息...我认为我的问题是在 WHERE 子句中使用了变量。我试过用 backtics 来逃避这个 $(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=''