Powershell:比较两个数组之间的值,并提取相关的值

问题描述:

所以这里是我想要完成的。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多个团队,我想避免无效代码出现在任何地方我可以。我是否缺少明显的东西?有没有更好的方法(或者甚至只是一种功能良好的方式!),这可能会起作用?

任何帮助,您可以提供将不胜感激!

$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