Avatar of rookeydooks
rookeydooks
 asked on

Login Script to pull users IP Phone from AD and then create a registry key in HKCU with that value

I need a login script to pull the IP Phone from Active Directory and add the value to:

HKEY_CURRENT_USER/SOFTWARE/XYZ/PhoneClient

I found the script below on another website but unfortunately it thread ends with the original post'er saying.. they did a little tweaking to what was suggested and got it working! But they never posted what they done.

The suggested login script is

Dim objSysInfo, objUser
Set objSysInfo = CreateObject("ADSystemInfo")
Set objUser = GetObject("LDAP://" & objSysInfo.UserName)
set strtelno = objuser.telephonenumber ' Currently logged in User

Const HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\shoreline teleworks\shoreware client\"
KeyPath = "SOFTWARE\shoreline teleworks\shoreware client"
strValueName = "AgentID"
strValue = strtelno ' <-- This sets the Telephone Number
objRegistry.CreateKey HKEY_CURRENT_USER, strKeyPath, strvaluename, strvalue


I'm guessing i need to add an LDAP path on line 3 >> Set objUser = GetObject("LDAP://" & objSysInfo.UserName)

Something like >> LDAP://OU=OurUSerGroup,DC=OurDomain,DC=com

I've researched objuser for IP Phone and it says use >> objuser.ipPhone (instead of line 4 >> set strtelno = objuser.telephonenumber ' Currently logged in User)

Then edit lines 9 and 10 >>
strKeyPath = "SOFTWARE\shoreline teleworks\shoreware client\"
KeyPath = "SOFTWARE\shoreline teleworks\shoreware client"

To our value >> SOFTWARE/XYZ/PhoneClient

I want to run this as a login script via Group Policy to around 50 users.
* RegeditActive DirectoryVB Script

Avatar of undefined
Last Comment
rookeydooks

8/22/2022 - Mon
Chris Dent

This should do it.
try {
    $adUser = ([ADSISearcher]"(sAMAccountName=$env:USERNAME)").FindOne()
    $ipPhone = $adUser.Properties['ipPhone'][0]

    Set-ItemProperty HKCU:\SOFTWARE\XYZ\PhoneClient -Name SomeValueName -Value $ipPhone
} catch {
    # Would you like to log any errors?
}

Open in new window

Note that I made up a property name under the registry key, you might want to fix that. The key is assumed to exist before the script runs. Is that reasonable?
rookeydooks

ASKER
Hi Chris, Yes the value exists.

Its called Endpoint
ASKER CERTIFIED SOLUTION
Chris Dent

Log in or sign up to see answer
Become an EE member today7-DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform
Sign up - Free for 7 days
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
ask a question
rookeydooks

ASKER
Should i be able to save the below in to a notepad file, save as script.vbs and run it from the desktop of a windows 7 machine to test ?

try {
    $adUser = ([ADSISearcher]"(sAMAccountName=$env:USERNAME)").FindOne()
    $ipPhone = $adUser.Properties['ipPhone'][0]

    Set-ItemProperty HKCU:\SOFTWARE\XYZ\PhoneClient -Name Endpoint -Value $ipPhone
} catch {
    # Would you like to log any errors?
}
I started with Experts Exchange in 2004 and it's been a mainstay of my professional computing life since. It helped me launch a career as a programmer / Oracle data analyst
William Peck
SOLUTION
Log in to continue reading
Log In
Sign up - Free for 7 days
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
Chris Dent

VbScript version, untested.
Const HKEY_CURRENT_USER = &H80000001
Const REG_PATH = "SOFTWARE\XYZ\PhoneClient"

Dim objSysInfo : Set objSysInfo = CreateObject("ADSystemInfo")
Dim objUser : Set objUser = GetObject("LDAP://" & objSysInfo.UserName)

Dim strIPPhone : strIPPhone = objUser.Get('ipPhone')

Dim objReg : Set objReg = GetObject("winmgmts:\\.\root\default:StdRegProv")

objReg.SetStringValue HKEY_CURRENT_USER, REG_PATH, "Endpoint", strIPPhone

Open in new window

rookeydooks

ASKER
Just saved your last script (below) as .ps1 and ran from the desktop. It worked a treat. My IP Phone value is now in the registry under endpoint.

Thank you so much Chris.

try {
    $adUser = ([ADSISearcher]"(sAMAccountName=$env:USERNAME)").FindOne()
    $ipPhone = $adUser.Properties['ipPhone'][0]

    Set-ItemProperty HKCU:\SOFTWARE\XYZ\PhoneClient -Name Endpoint -Value $ipPhone -Force
} catch {
    # Would you like to log any errors?
}
rookeydooks

ASKER
Excellent help and support from Chris Dent. My issue was resolved in minutes.

Thank you so much Chris.
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.