【发布时间】:2017-03-09 13:47:31
【问题描述】:
这就是我想要完成的。
我有一个新启动器的表单,New Starter Form.csv,它包含以下标题和信息:
名字、姓氏、团队名称、开始日期
乔,博客,安全管理员,01/01/18
我有一个名为 Team List.csv 的不同 csv,它具有以下标题和信息:
团队领导、团队名称、重组
A B,营销,RESMARKETING01G
C D,产品,RESPRODUCT01G
E F,Advertising,RESADVERTISING01G
G H,安全管理员,RESSECURITYADMIN01G
我想将这两个 CSV 文件导入 Powershell,运行一个比较,从 New Starter Form 中获取团队名称,并检查团队列表中是否有任何匹配项,如果有,将相关的 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 多个团队,并且我想在任何地方避免低效的代码能够。我错过了一些明显的东西吗?有没有更好的方法(或者甚至只是一种功能性的方法会很棒!)这可以工作?
您能提供的任何帮助将不胜感激!
【问题讨论】:
标签: arrays powershell csv