にはPowershell、何が最善の方法に対して一定のテーブル。
-
13-09-2019 - |
質問
私はかなり新しいユー,という知らせにより達成には、以下の例の問題です。
私の配列マッピングから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の質問:
- 複数のCSVファイル
- 合CSVs-追加CSV別の列として
- CMDはPowershellコマンドを結合(合併)に対応するラインからのファイル
- 使用できまSQLコマンドなどの入)オブジェクトにはpowershell、SQL serverデータベースはかかるのですか?
- CMDはPowershellコマンドを結合(合併)に対応するラインからのファイル
- "の二つのCSVs、試合の列に2つ以上の列には、輸出の特定のカラムの両方からのcsvsとユー
- 合併につCSVファイルを加えながら新しいときは、上書き帳
- 合併CSVs後に再度ご注文のカラム出力
- 合併につCSVファイルを加えながら新しいときは、上書き帳
- 効率的な統合型オブジェクトデータセットを複数のキーをマッチング