我使用invoke-sqlcmd在MSSMS上查询数据库。这没问题。 我有一个循环运行查询X次,查询返回一个键码,例如。 TGHDWS4。
我需要在Powershell中将此键码作为字符串。然后,我想将字符串添加到数组中。
我唯一尝试过的就是使用invoke-sqlcmd。我在网上看到了其他使用连接创建和连接关闭方法的示例,但我不想在可能的情况下这样做。
下面的代码是我所在的位置。如何将键码(从查询中返回)作为字符串添加到数组?
#Enter your confirmation numbers here;
$confArray = @(
'0000000090519838',
'0000000090059392'
)
$resultArray = @()
#Function that runs for each element in the above array
function getKeycode ($confNumber) {
$QueryFmt= "
select distinct top 100
aa.deliveryKeycode as 'Keycode'
from appointment a with (nolock)
left join appointmentattribute aa with (nolock) on aa.appointmentid = a.appointmentid
where
a.confirmationnumber in (
'"+ $confNumber + "'
)
"
$result = Invoke-Sqlcmd -ServerInstance myserver -Database mydatabase -Query $QueryFmt
$resultArray.Add($result)
}
#the for loop
foreach($con in $confArray){
getKeycode -confNumber $con
$count ++;
}
答案 0 :(得分:1)
我想只是从函数中返回数组:
# ...
$result = Invoke-Sqlcmd -ServerInstance myserver -Database mydatabase -Query $QueryFmt
$resultArray.Add($result)
return $resultArray
}
答案 1 :(得分:0)
从您的函数写入父作用域中的数组有点反模式,我强烈建议您这样做。
直接return Invoke-SqlCmd ...
:
function Get-Keycode ([int]$confNumber) {
$QueryFmt= "
select distinct top 100
aa.deliveryKeycode as 'Keycode'
from appointment a with (nolock)
left join appointmentattribute aa with (nolock) on aa.appointmentid = a.appointmentid
where
a.confirmationnumber in (
'"+ $confNumber + "'
)"
return Invoke-Sqlcmd -ServerInstance myserver -Database mydatabase -Query $QueryFmt
}
# Assign the output of the foreach loop to `$KeyCodes`
$KeyCodes = foreach($con in $confArray){
Get-Keycode -confNumber $con
$count++
}