在powershell中,有没有办法通过列名而不是列索引来访问列中的信息?
更具体地说,我有以下powershell脚本:
$SQLQuery = "select * from fruits"
$server = $env:COMPUTERNAME
$Database = "Test"
$myTable = "Fruits"
$Datatable = New-Object System.Data.DataTable
$Connection = New-Object System.Data.SQLClient.SQLConnection
$Connection.ConnectionString = "server='$Server';database='$Database';trusted_connection=true;"
$Connection.Open()
$Command = New-Object System.Data.SQLClient.SQLCommand
$Command.Connection = $Connection
$Command.CommandText = $SQLQuery
$Reader = $Command.ExecuteReader()
$Datatable.Load($Reader)
$Connection.Close()
foreach ($r in $Datatable.rows)
{
Write-Host $($r[1])
}
脚本打印存储在名为Fruits(&#34; FruitName&#34;)的表的第二列中的数据很好,但我想知道是否有办法通过引用FruitName来评估第二列?< / p>
这是我的数据结构:
答案 0 :(得分:1)
您可以从列本身获取列索引:
$FruitNameIndex = $Datatable.Columns['FruitName'].Ordinal
$FruitName = $r[$FruitNameIndex]
您可以将所有列索引预先包装在哈希表中,以避免在索引器中使用长表达式:
$ci = $Datatable.Columns |ForEach-Object {$t = @{}} {$t[$_.ColumnName] = $_.Ordinal} {return $t}
现在您可以像这样使用它:
$FruitName = $r[$ci.FruitName]