0

MS SQL データベースから 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

マック

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

この結果から 1 番目または 2 番目の MAC を取得するにはどうすればよいですか? つまり、たとえば $MAC1 と $MAC2 で結果を取得したいということです...

私の英語で申し訳ありませんが、読んでいただきありがとうございます。

4

1 に答える 1

1

がクエリでも使用されない限り、SELECTステートメントは特定の順序で項目を返しません。ORDER BYセットを注文しない場合、クエリを 2 回実行すると異なる値が返される可能性があります。

n 番目の要素を取得するには、まず返された行数を確認します。行の数を含むDataTablehas プロパティ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

2 つの MAC アドレスを異なる変数に入れるには、代入演算子を使用します。そのようです、

PS C:\> $MAC1 = $DataSet.Tables[0].Rows[0].MAC
PS C:\> $MAC2 = $DataSet.Tables[0].Rows[1].MAC
于 2013-05-24T19:31:26.460 に答える