by pstosso at 2013-03-23 13:31:41
I have a csv file that looks like the following…by poshoholic at 2013-03-23 15:41:47
"SamAccountName", "Name"
"tosso", "osso, tater J"
I want to enter the Name ("osso, tater") and be able to get the SamAccountName from the csv file and store it in a variable.
I’m having issues with the SamAccountName.$user = Read-Host 'Enter user name'
$irmusername = Import-Csv $source\script\irmuser.csv
What you need to do is create a hash table from your CSV. Something like this:by mjolinor at 2013-03-23 16:40:07# Create the lookup table from the csv file contents
$lookupTable = @{}
Import-Csv $source\script\irmuser.csv | ForEach-Object {
$lookupTable[$.Name] = $.SamAccountName
}
# Now prompt the user for a username
$user = Read-Host 'Enter user name'
# Find the SAM account name for the user, first using exact match, then using partial match if there is only one that matches
if ($lookupTable.Keys -contains $user) {
"The SAM Account Name for $user is $($lookupTable[$user])."
} elseif ($possibleMatches = @($lookupTable.Keys -like "$user")) {
if ($possibleMatches.Count -eq 1) {
"The SAM Account Name for $($possibleMatches[0]) is $($lookupTable[$possibleMatches[0]])."
} else {
"The username you provided ($user) is ambiguous. The following users were found as possible matches: $($possibleMatches -join ','). Please try again with a more specific username."
}
} else {
"User $user was not found."
}
NOTE: I have not tested this code. I just put this together as one possible way to approach the problem. There may be a typo or two.
I’ve gotten to like that -OutputMode switch in V3’s Out-Gridviewby pstosso at 2013-03-23 17:49:07$irmusername = Import-Csv $source\script\irmuser.csv
$SamAccount = $irmusername |
where {$.Name -match (Read-Host "Enter user name match string")} |
Out-GridView -Title "Select User" -OutputMode Single |
select -ExpandProperty SamAccountName
Thanks for the quick reply. The lookup table works great.by pstosso at 2013-03-23 17:51:24
[quote="poshoholic"]What you need to do is create a hash table from your CSV. Something like this:by poshoholic at 2013-03-24 11:38:04# Create the lookup table from the csv file contents
$lookupTable = @{}
Import-Csv $source\script\irmuser.csv | ForEach-Object {
$lookupTable[$.Name] = $_.SamAccountName
}
# Now prompt the user for a username
$user = Read-Host 'Enter user name'
# Find the SAM account name for the user, first using exact match, then using partial match if there is only one that matches
if ($lookupTable.Keys -contains $user) {
"The SAM Account Name for $user is $($lookupTable[$user])."
} elseif ($possibleMatches = @($lookupTable.Keys -like "$user")) {
if ($possibleMatches.Count -eq 1) {
"The SAM Account Name for $($possibleMatches[0]) is $($lookupTable[$possibleMatches[0]])."
} else {
"The username you provided ($user) is ambiguous. The following users were found as possible matches: $($possibleMatches -join ','). Please try again with a more specific username."
}
} else {
"User $user was not found."
}
NOTE: I have not tested this code. I just put this together as one possible way to approach the problem. There may be a typo or two.[/quote]
I did have to store that SamaccountName found in a variable but that wasn’t hard at all. Thank you. This helps me out so much.
My pleasure. I’m glad I was able to help.