【发布时间】:2018-06-03 10:07:28
【问题描述】:
我有一种情况,我需要在 .csv 中获取电子邮件列表,导入列表并从 Active Directory 中提取适用的属性(通过 GetAD-User?)。
以下是我估计的流程:
- 导入 .csv 电子邮件列表
- 使用循环遍历每一行。
- 通过管道将数据传送到 Get-ADUser(通过 -filter)并返回相应的属性。
这是一个用于测试目的的示例列表(另存为:csv_file.csv):
abc@abc.com
1abc@abc.com
a2bc@abc.com
a3bc@abc.com
a4bc@abc.com
ab5c@abc.com
这是我的代码:
$Name = @()
Get-Content -path "C:\Location\Of\Sample\Input\csv_file.csv" |
ForEach-Object {
Get-ADuser -filter * -properties
Mail, DisplayName, Department, Office | Select DisplayName, Department,
Office
}
当我运行此程序时,我会收到一份所有 AD 用户的列表,其中包含我的示例 csv_file.csv 中列出的每个电子邮件行。
我的问题: 1. 如何只显示我的 csv 文件中列出 Mail 属性的用户?例如,我列出了 6 封电子邮件,我应该只显示与这 6 个地址关联的属性。 2. 如何将 .csv 中列出的值与 Get-ADUser 中的 .Mail 属性进行比较?
示例输出: 超过 60k+ 显示名称、部门、办公室记录!
我似乎很难理解 powershell 中的循环约束和过滤器。我确定我的问题的根源是 -filter *,但它应该是什么?如何适当地遍历每个地址?我参考了其他一些帖子,但似乎无法确定任何特定于这种情况的内容。 非常感谢建设性的批评。 感谢您的帮助!
【问题讨论】:
-
您被截断的代码似乎不完整 (?)。
-
@s-m-e,嗯。对不起。我认为问题在于 -properties 条目后的中断。请删除该换行符并在同一行上运行属性?这样做之后,一旦给出了适当的文件路径,它似乎就可以工作了。
-
您在运行 Exchange 吗?
-
@mjolinor。是的。谢谢。
标签: powershell csv foreach scripting