Powershell SQL返回
我试图在远程服务器上查看sql查询的结果。我的问题是,返回时,我看到第一个值对其他每个值重复 代码如下:Powershell SQL返回,sql,powershell,Sql,Powershell,我试图在远程服务器上查看sql查询的结果。我的问题是,返回时,我看到第一个值对其他每个值重复 代码如下: #Connect to VPN cls C: cd "C:\Program Files (x86)\Cisco Systems\VPN Client" & ".\vpnclient.exe" connect WWVPN1 user sceris pwd ****** $vendorNumber = "2130196" $vendorName = "" $invoiceNumber
#Connect to VPN
cls
C:
cd "C:\Program Files (x86)\Cisco Systems\VPN Client"
& ".\vpnclient.exe" connect WWVPN1 user sceris pwd ******
$vendorNumber = "2130196"
$vendorName = ""
$invoiceNumber = "1362433"
$conn = New-Object System.Data.SqlClient.SqlConnection("Data Source=wwfinance; Initial Catalog=ScerIS; Integrated Security=False; uid=Peter; pwd=*****; MultipleActiveResultSets=true")
## Open DB Connection
$conn.Open()
$sqlText = "SELECT UdiValue1, UdiValue37, UdiValue38, UdiValue3
FROM ScerIS.dbo.indexedRangesView_4
WHERE (UdiValue37 like '%$vendorName%' OR UdiValue38 like '$VendorNumber') AND UdiValue3 = '$invoiceNumber'"
$cmd = New-Object System.Data.SqlClient.SqlCommand($sqlText, $conn)
$Reader = $cmd.ExecuteReader()
while ($Reader.Read()) {
$ArchiveDate = $Reader.GetValue($1)
$VendorNumber = $Reader.GetValue($2)
$VendorName = $Reader.GetValue($3)
$InvoiceNumber = $Reader.GetValue($4)
}
write-host $ArchiveDate
write-host $VendorNumber
write-host $VendorName
write-host $InvoiceNumber
$conn.close()
#Disconnect from VPN
cd "C:\Program Files (x86)\Cisco Systems\VPN Client"
& ".\vpnclient.exe" disconnect
对于每个写入主机,输出将显示存档日期4次。如何才能成功获取要显示的其他值
样本输出
2015年4月9日上午12:00:00
2015年4月9日上午12:00:00
2015年4月9日上午12:00:00
2015年4月9日12:00:00 AM
$1
,$2
,$3
和$4
从未定义。如果要从前4列获取值,请使用:
while ($Reader.Read()) {
$ArchiveDate = $Reader.GetValue(0)
$VendorNumber = $Reader.GetValue(1)
$VendorName = $Reader.GetValue(2)
$InvoiceNumber = $Reader.GetValue(3)
}
在遍历整个结果集之前,您不会编写任何内容
$ArchiveDate
、$VendorNumber
、$VendorName
和$InvoiceNumber
都将具有循环最后一次迭代的值。考虑到您在这里所做的,我可能会使用,但不清楚您要显示什么或为什么。即使是循环的最后一次迭代,也无法解释为什么归档日期会被写入4次。谢谢,出于某种原因,我的印象是,这些都是特殊的powershell语法,比如$true,或者在-match之后,您可以使用$Matches。不知道为什么