2017-03-09 208 views
1

所以這裏是我想要完成的。Powershell:比較兩個數組之間的值,並提取相關的值

我有一個新的首發,新品首發Form.csv,具有以下標題和信息的表格:

名字,姓氏,teamname,STARTDATE

喬,布洛格斯,安全管理員,01/01/18

我有不同的CSV叫團隊List.csv,具有以下標題和信息:

teamlead,teamname,resgroup

AB,市場營銷,RESMARKETING01G

CD,產品,RESPRODUCT01G

EF,廣告,RESADVERTISING01G

GH,安全管理,RESSECURITYADMIN01G

我想將兩個CSV文件導入到Powershell中,運行一個comparisson,它從New Starter Form獲取團隊名稱,一個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,我的編碼知識是相當有限的整體,但我已經習慣了,我可以索引值保存爲一個變量的概念,然後我可以調用該變量來執行諸如$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 

上面將代碼:

  • 導入你的兩個CSV的
  • 抓住從你的新啓動的CSV一個新的啓動器,基於第一& 姓氏
  • 搶團隊&資源組從該隊列表
  • 顯示resgroup(這是您將需要用來popu公元后期)
+0

這簡單得多,而且很有魅力,非常感謝! – HMNIW

+0

沒問題。樂意效勞 :) – TechSpud