【发布时间】:2012-11-16 21:14:19
【问题描述】:
我们正在使用 powershell 在我们的 Active Directory 中自动创建我们的学生用户。除了启用邮箱,我们一切正常。我们只向中学生提供电子邮件地址。所以我试图让脚本读取 csv 并且只为中学生启用邮箱。我们所有中学的校园号都小于 100,所以我尝试让脚本使用 ForEach,然后如果 $_.extensionAttribute1(csv 中带有校园号的列)小于 100,那么它将邮件启用该帐户.我遇到的问题是只处理第一个用户并结束脚本。我希望它遍历 csv 中的每一行。这是我的脚本。
add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010
Import-CSV C:\scripts\updateuser.csv | ForEach {
$campus =$_.extensionAttribute1
If ($campus -lt '100') {
Enable-Mailbox -Identity $_.sAMAccountName -Database NISDSRV6DB1
}}
您可以提供任何帮助以使其在整个 csv 中运行,我们将不胜感激。 提前感谢您的帮助。
编辑...我在搞乱 csv 文件,得到了一些有趣的结果。该脚本显示任何内容的唯一方法是 extensionAttribute1 字段填充了 1。我试图获取所有小于 100 的用户。
【问题讨论】:
-
您的语法看起来正确 - 您确定它的行为方式与您想象的一样吗?尝试在 if 语句之前写一条消息进行调试,以查看它在 ForEach-Object 循环中执行了多少次。
-
您的代码看起来不错,我会考虑复制您的 CSV 文件,或者至少将一个虚拟 CSV 文件放在一起并针对它进行测试。我怀疑您当前 CSV 中的某些内容在处理第一行后导致循环停止。
标签: powershell csv if-statement foreach