Author Posts

July 23, 2015 at 9:49 am

I'm trying to come up with a way to get a display or friendly name for a local user logged into their PC. This is part of a larger project, and I need to be able to write some basic information to a database.

Here's what I have so far. I cannot for the life of me figure out what I am doing wrong. I am assuming it is a syntax error, as it works when I feed it information rather than a variable.

$user = whoami /upn
#Get-ADUser -Filter 'EmailAddress -eq "$user"' | Select Name | ft -HideTableHeaders
Get-ADUser -Filter 'EmailAddress -eq "tfox@test.com"' | Select Name | ft -HideTableHeaders

#Test Output
Write-host
Write-host $user
write-host $name

July 23, 2015 at 9:57 am

The outermost set of quotation marks determine whether PowerShell replaces variables or not. In your example, they're single quotes, so $user is being passed literally rather than being replaced.

July 23, 2015 at 10:05 am

Thanks, that gets me further along.

July 23, 2015 at 10:28 am

In VBScript, there was a COM object called ADSystemInfo that was an easy way to get AD information for the logged on user. Check this out as a Powershell way:

https://technet.microsoft.com/en-us/library/ff730963.aspx

Keep in mind that if this is running on the client, that Windows RSAT tools need to be installed in order to use Get-ADUser as you will need the ActiveDirectory module. So, typically, ADSI is leveraged to find user information in those instances which is provided I the above link. The ADSI there can be shortened a bit, but validate it is working as expected first.