从powershell中的System.Data.DataRow中提取数据

时间:2016-08-30 10:13:35

标签: sql powershell

我有一个执行sql命令并返回ID号列表的powershell脚本。

当我遍历列表时,这就是它返回的内容。

bindToController

我尝试将System.Data.DataRow System.Data.DataRow System.Data.DataRow System.Data.DataRow System.Data.DataRow System.Data.DataRow 添加到我的列表中,

Out-String

但是这会返回格式错误的数字列表,所有内容都标有选项。见下文。

$q_result = $db.ExecuteWithResults($int_cmd2)
$table = $q_result.Tables[0] | Out-String

foreach ($user_info in $table)
{
    write-host $user_info 
}

我尝试在循环中使用 GroupID ------------- 381 382 383 384 385 386 ,但不返回任何内容。

如何从列表中仅提取数字?

3 个答案:

答案 0 :(得分:6)

Item参数化属性,而非您可以编入索引的列表:

foreach($row in $table)
{
    $row.Item("GroupID")
}

或(假设“GroupID”是第一列):

foreach($row in $table)
{
    $row.Item(0)
}

答案 1 :(得分:4)

您也可以使用ItemArray。打印整行,而Item(index)打印来自索引单元格的值。

enter image description here

答案 2 :(得分:1)

假设列名称为GroupID

$sql = "SELECT [GroupID] FROM theTable"
$table = Invoke-SQLCmd -Query $sql -ServerInstance $sqlServerInstance -Database $database -OutputAs DataRows

foreach($user_info in $table)
{
    $user_info.GroupID
}

foreach($user_info in $table.GroupID)
{
    $user_info
}