We help IT Professionals succeed at work.

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

216 Views
Last Modified: 2017-04-03
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.
Comment
Watch Question

Chris DentPowerShell Developer
CERTIFIED EXPERT
Top Expert 2010

Commented:
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?

Author

Commented:
Hi Chris, Yes the value exists.

Its called Endpoint
PowerShell Developer
CERTIFIED EXPERT
Top Expert 2010
Commented:
This problem has been solved!
(Unlock this solution with a 7-day Free Trial)
UNLOCK SOLUTION

Author

Commented:
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?
}
Chris DentPowerShell Developer
CERTIFIED EXPERT
Top Expert 2010
Commented:
This problem has been solved!
(Unlock this solution with a 7-day Free Trial)
UNLOCK SOLUTION
Chris DentPowerShell Developer
CERTIFIED EXPERT
Top Expert 2010

Commented:
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

Author

Commented:
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?
}

Author

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

Thank you so much Chris.