简体   繁体   中英

Get sAMAccountNames from CSV of Employee IDs powershell

Im not sure why I cannot get this to work, but I have a .csv of employee ID's and I want to add them to an AD group, but I cannot get this to work

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

Then I would add them to the group, but I cannot it to return the ADUserObject. Not sure what I am missing.

You need to reference the property name (column) of the user as it appears in the csv file. For example, if the value in the file is under the EmployeeID header:

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

For the above to work your csv file needs to look like:

EmployeeID 
1234 
2345 
3456 

Undeclared collection variable is used in foreach loop.

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

As $IDs is empty a variable, the loop doesn't do much.

In order to avoid this kind of errors, use the strict mode: Set-PSDebug -Strict . This will rise an error for using undeclared variable. (Rant: the strict mode should be the default in Powershell. I set it in my profile and all the scripts I write for good measure.)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM