从Employee IDs的PowerShell获取sAMAccountNames

时间:2013-03-07 12:34:12

标签: powershell csv foreach

我不知道为什么我不能让它工作,但我有一个.csv的员工ID,我想将它们添加到AD组,但我不能让它工作

Function Sync-ADGroup {
$userIDs = Import-CSV $CSV
foreach($ID in $IDs){
    Get-ADUser -Filter "EmployeeID -eq '$ID'" -Properties SAMAccountName
    }
}

然后我会将它们添加到组中,但我无法返回ADUserObject。不确定我错过了什么。

2 个答案:

答案 0 :(得分:2)

您需要引用用户的属性名称(列),因为它显示在csv文件中。例如,如果文件中的值位于EmployeeID标题下:

foreach($userID in $userIDs)
{ 
    Get-ADUser -Filter "EmployeeID -eq $($userID.EmployeeID)" -Properties SAMAccountName 
}

要使上述工作正常,您的csv文件需要如下所示:

EmployeeID 
1234 
2345 
3456 

答案 1 :(得分:0)

未声明的集合变量用于foreach循环。

$userIDs = Import-CSV $CSV # Load stuff to "userIDs"
foreach($ID in $IDs){ # Enumerate "IDs", oops, should be "userIDs"

由于$IDs为空变量,因此循环不会做太多。

为避免此类错误,请使用严格模式:Set-PSDebug -Strict。这将导致使用未声明变量的错误。 (Rant:严格模式应该是Powershell中的默认模式。我在我的个人资料中设置它以及我写的所有脚本都很好。)