Link to home
Start Free TrialLog in
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.
Avatar of Chris Dent
Chris Dent
Flag of United Kingdom of Great Britain and Northern Ireland image

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?
Avatar of rookeydooks
rookeydooks

ASKER

Hi Chris, Yes the value exists.

Its called Endpoint
ASKER CERTIFIED SOLUTION
Avatar of Chris Dent
Chris Dent
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
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?
}
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
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

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?
}
Excellent help and support from Chris Dent. My issue was resolved in minutes.

Thank you so much Chris.