通过PowerShell对Microsoft SQL中的数据进行排序

时间:2013-05-24 10:15:06

标签: sql-server-2008 networking powershell

我有以下脚本允许我从MS SQL Db获取MAC地址。

Function Get-MAC ($Server)
{
    $SQLServer = "TVEAPP02" #use Server\Instance for named SQL instances! 
    $SQLDBName = "EuropeanMacs"
    $SqlQuery = "select MAC from dbo.tbl_MAC WHERE HOST = '$Server'"

    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
    $SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True"

    $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
    $SqlCmd.CommandText = $SqlQuery
    $SqlCmd.Connection = $SqlConnection

    $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
    $SqlAdapter.SelectCommand = $SqlCmd

    $DataSet = New-Object System.Data.DataSet
    $SqlAdapter.Fill($DataSet)

    $SqlConnection.Close()

    $DataSet.Tables[0]
}

GET-MAC Computerrname 

我得到了这个结果的例子:

  

GET-MAC 1IT001 2

     

MAC

     

--- F4:CE:46:2C:21:FE
  F4:CE:46:2C:21:FE

如何从此结果中获得第一个或第二个MAC? 我的意思是我希望在$ MAC1和$ MAC2 ......

中得到结果

抱歉我的英文,谢谢你的阅读。

1 个答案:

答案 0 :(得分:1)

SELECT语句将以任何特定顺序返回项目,除非在查询中也使用ORDER BY。如果您不对该集进行排序,则运行该查询两次可能会返回不同的值。

要检索第n个元素,请先检查返回的行数。 DataTable具有属性Rows,其中包含行数。像这样,

$DataSet.Tables[0].Rows.Count

在行计数已知(因此您不指向不存在的行)之后,通过行索引和列名称访问数据。假设第3行中的MAC地址是46:2C:21:FE:F4:CE,检索它。行索引从零开始,就像表索引一样。像这样,

PS C:\> $DataSet.Tables[0].Rows[2].MAC
46:2C:21:FE:F4:CE

要将两个MAC地址放在不同的变量中,只需使用赋值运算符。像这样,

PS C:\> $MAC1 = $DataSet.Tables[0].Rows[0].MAC
PS C:\> $MAC2 = $DataSet.Tables[0].Rows[1].MAC