質問

私はかなり新しいユー,という知らせにより達成には、以下の例の問題です。

私の配列マッピングからIPアドレスをホスト名です。このテキストフォーマットのDHCPリース:

PS H:\> $leases

IP                    Name
--                    ----
192.168.1.1           Apple
192.168.1.2           Pear
192.168.1.3           Banana
192.168.1.99          FishyPC

もう一つの配列マッピングからMACアドレスIPアドレスです。このリストのIP予約:

PS H:\> $reservations

IP                    MAC
--                    ---
192.168.1.1           001D606839C2
192.168.1.2           00E018782BE1
192.168.1.3           0022192AF09C
192.168.1.4           0013D4352A0D

便宜上、これまで第三の配列マッピングからMACアドレスIPアドレスとホスト名を次のコードです。という考え方です $reservations を得るべき第三分野は、"氏名、住まいのマッチング"IP"の分野:

$reservations = $reservations | foreach {
    $res = $_
    $match = $leases | where {$_.IP -eq $res.IP} | select -unique
    if ($match -ne $NULL) {
        "" | select @{n="IP";e={$res.IP}}, @{n="MAC";e={$res.MAC}}, @{n="Name";e={$match.Name}}
    }
}

ご希望の出力のようなこと:

PS H:\> $ideal

IP                    MAC                 Name
--                    ---                 ----
192.168.1.1           001D606839C2        Apple
192.168.1.2           00E018782BE1        Pear
192.168.1.3           0022192AF09C        Banana
192.168.1.4           0013D4352A0D

もっとよい方法がない?

役に立ちましたか?

解決

リー・ホームズは<のhref = "https://web.archive.org/web/20110723223450/http://www.leeholmes.com/blog/2005/06/22/creating-sqls-joinを書きました様・機能・イン・MSH何をしたいん参加-オブジェクトの機能のオン/」のrel = 『nofollowをnoreferrer』>ブログ記事。それはまだPowerShellのには組み込まれていません残念ます。

他のヒント

後1.5年、cmdletっ貼り付けの答えを遂げた多くのキッチンやミーティングルームで完全に時代遅れです。そのために置換している コードReadMe ライブラリを最新のバージョン。

Joinオブジェクト

の参加-オブジェクトcmdletダウンロード可能ですので、からユーギャラリーのコマンドを使用して:

Install-Script -Name Join

Join パッケージには、 Join-Object (別名 Join)コマンドは、以下のプロキシのコマンド:

  • InnerJoin-Object, 、エイリアス InnerJoin (Join-Object -JoinType Inner)
    のみを返します参加しているオブジェ
  • LeftJoin-Object, 、エイリアス LeftJoin (Join-Object -JoinType Left)
    を返します参加している物体の左物
  • RightJoin-Object, 、エイリアス RightJoin (Join-Object -JoinType Right)
    を返します参加しているオブジェクトと、他のオブジェ
  • FullJoin-Object, 、エイリアス FullJoin (Join-Object -JoinType Full)
    を返します参加している物体の左右のオブジェ
  • CrossJoin-Object, 、エイリアス CrossJoin (Join-Object -JoinType Cross)
    参加各左のオブジェクト権オブジェクト
  • Update-Object, 、エイリアス Update (Join-Object -JoinType Left -Merge = {RightOrLeft.$_})
    更新左側のオブジェクトのオブジェクトのプロパティ
  • Merge-Object, 、エイリアス Merge (Join-Object -JoinType Full -Merge = RightOrLeft.$_})
    更新左側のオブジェクトのオブジェクトのプロパティおよび挿入します 右の場合の値の関連性はない。

ReadMe

のReadMeファイル(ソースコードはGitHub: https://github.com/iRon7/Join-Object

設置

ダウンロード後(Install-Script -Name Joinのスクリプトするだけで簡単に呼び出される ドソーシング:

. .\Join.ps1

また考えに変換するスクリプトをユーモジュールの名前を変更したりでユーモジュール(.psm1)ファイルに移動するときのモジュールをフォルダで定義され $env:PSModulePath.詳細は: 書き方についてはPowerShellスクリプトのモジュール.
注意:Import-Module コマンドが必要な負荷を代行しまいます。

答え

答えによら、実際にどの質問:

$reservations | LeftJoin $leases -On IP

IP          MAC          Name
--          ---          ----
192.168.1.1 001D606839C2 Apple
192.168.1.2 00E018782BE1 Pear
192.168.1.3 0022192AF09C Banana
192.168.1.4 0013D4352A0D

より例がありますのStackoverflowの質問:

とに 参加-テストスクリプトオブジェクト.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top