【发布时间】:2016-05-11 19:45:29
【问题描述】:
我有一个 .csv 文件(分隔符为 |),其中 AD 字段作为标题,字符串作为数据放入其中。我想从该 .csv 文件创建一个哈希表,其中列标题作为键,字符串信息作为数据。
这是文件格式:
LastName|FirstName|Office|Employeeid|BusinessTitle|CoreSector|Sector|CmbCorePractice|CmbPractice|Region|Committees|SectorLeaderRole|PracticeLeaderRole|AreaCountryRole|FirmLeaderShipRoleOne|FirmLeaderShipRole|generationQualifier|givenName|middlename|sn|extensionAttribute12|homePostalAddress|telephoneNumber|ipPhone|facsimileTelephoneNumber|mobile|homePhone|department|manager|assistant|extensionAttribute13
SMITH|JAMES|AMSTERDAM|0000000000|Leader|Healthcare|#|#|#|Europe|#|#|#|#|#|#|MR|JAMES|#|SMITH|#|#|+1 212 000 7692|0000|#|#|#|Knowledge Management|0001000000|#|#|#|#
数据以SMITH 开头,与LastName 对齐。
【问题讨论】:
-
这将有助于我们查看:示例 CSV 数据(当然是混淆的),以及您已经尝试实现的代码(以及失败的地方)。
-
但是为什么呢? :) 对象数组使用起来更容易、更安全(你知道 100% 确定哪些属性值属于一起)并且很容易使用
$ad = import-csv -path myfile.csv -delimiter "|"导入 -
@FrodeF。 - 我最终想将 .csv 文件中的内容与 AD 中的内容进行比较,因此我只能使用文件中的内容更新 AD,因为文件是源文件,我认为哈希表是最好的做法。现在,我当前的脚本会遍历 .csv 文件并使用是否是新的信息更新 AD(文件和 AD 中的信息可能相同,但文件仍会覆盖 AD)。
-
只要前后的值相同,覆盖属性是否重要?
Set-ADUser -Replace $ht需要属性和值的哈希表。将它放在哈希表与对象中没有任何区别,因为您仍然需要针对 AD 对象逐一检查属性并将更改添加到“attributestomodify”-哈希表。如果文件可能包含多个用户,则更有理由使用Import-CSV -Delimiter '|'。 :-)
标签: csv powershell hashtable