2017-03-09 6 views
1

ここで私が達成しようとしているのはここです。Powershell:2つの配列間の値を比較し、関連する値を抽出する

ファーストネーム、姓、TEAMNAMEは、

ジョー、Bloggs、セキュリティ管理を開始日:

は、私は以下のヘッダ情報を持つ新しいスターター、新しいスターターForm.csv、ためのフォームを持っています

/1月18日01 Iは、次のヘッダー情報を有しているチームList.csvと呼ばれる異なるCSVを有します

teamlead、TEAMNAME、resgroup

AB、マーケティング、RESMARKETING01G

CD、プロダクト、

EF、広告、RESADVERTISING01G

GH、セキュリティ管理、RESSECURITYADMIN01G

RESPRODUCT01G私は両方のCSVファイルをPowershellにインポートし、新しいスターターフォームからチーム名を取って比較を実行したいdチームリストに一致するものがあるかどうかをチェックし、一致する場合は、関連するRESグループをADの新しいスターターに追加します。

現在、私はそれらをインポートし、比較し、一致を見つけ、レコードのインデックス番号を見つけることができますが、このインデックス番号を取って苦労して、関連するRESグループを取得します。これまでのコードは次のようになります。

$teamlist = import-csv "\\location\Team List.csv" 
$newstarter = import-csv "\\otherlocation\New Starter Form.csv" 

[string]$teamname = Compare-Object -includeequal -excludedifferent -PassThru $newstarter.teamname $teamlist.teamname 

$teamname 

[array]::indexof($teamlist,$teamname) 

そして、私たちが実際に試合を見ることができることを示す、コンソールにこのを提供してくれ、ということ実行している、と一致するレコードは、最後の(-1)のものであること。

PS C:\WINDOWS\system32> $teamlist = import-csv "\\location\Team List.csv" 
$newstarter = import-csv "\\otherlocation\New Starter Form.csv" 

[string]$teamname = Compare-Object -includeequal -excludedifferent -PassThru $newstarter.teamname $teamlist.teamname 

$teamname 

[array]::indexof($teamlist,$teamname) 

Security Administration 
-1 

私はPowerShellを使用し多くの経験を持っていませんでした、と私のコーディングの知識はかなり全体的に限られているが、私は変数としてインデックス値を保存することができます概念に慣れて、その後、Iその変数を$teamlist.resgroup[VARIABLE HERE]のようなものに戻すことができます。 しかし、私が試みて、[array]::indexof($teamlist,$teamname)の前に新しい変数を宣言すると、Powershellは満足できません。

私はそれを調べていませんが、巨大なswitch文を追加する可能性があると思いますが、100以上のチーム全体を見ているかもしれないので、非効率なコードは避けてくださいできます。私は何かを明らかに欠いていますか?これがうまくいくかもしれないよりよい方法がありますか?

ご提供いただけるご支援をお待ちしております。

答えて

1
$teamlist = import-csv "\\location\Team List.csv" 
$newstarter = import-csv "\\otherlocation\New Starter Form.csv" 

# get a single new starter 
$person = $newstarter | Where-Object { $_.firstname -eq 'Joe' -and $_.lastname -eq 'Bloggs' } 

# get the new starters team 
$team = $teamlist | Where-Object { $_.teamname -eq $person.teamname } 

# get the new starters resource group 
$resgroup = $team.resgroup 

# use the resource group - this simply writes it to the console 
Write-Host $resgroup 

意志上記のコード:最初& 姓

  • グラブチームに基づいて

    • があなたの2つのCSVインポート
    • グラブ新しいスターターcsvファイルから単一の新しいスターター、&チームリストの新しいスターターのリソースグループ
    • resgroupを表示します(これはpopu遅いAD)
  • +0

    これははるかに簡単であり、魅力のように動作します、ありがとう! – HMNIW

    +0

    問題ありません。喜んで:) – TechSpud

    関連する問題