Powershell 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

我试图在远程服务器上查看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 = "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。不知道为什么