Passing variable does not work like direct placement

This topic contains 3 replies, has 3 voices, and was last updated by Profile photo of rambog cnonline.net rambog cnonline.net 3 years, 8 months ago.

  • Author
    Posts
  • #10813
    Profile photo of rambog cnonline.net
    rambog cnonline.net
    Participant

    I am writing a very simple LDAP query to gather some information on a user based upon a logon ID. The problem is that when I assign a value to $accountid it fails (see below) but when I input the ID for XXXX in (sAMAccountName=XXXX), everything works as expected. In other words, I don't use the variable $accountid but just put in the value directly in the filter statement. What do I need to do to cast the variable $accountid properly so as to be accepted in the filter statement?

    $accountid=Read-Host -prompt "Enter the userID for which you want to find info"
    $searcher=[ADSISearcher]'(&(objectClass=User)(objectCategory=person)(sAMAccountName=$accountid))'
    $hashtbl=$searcher.FindOne()|select -ExpandProperty Properties
    $tele=$hashtbl.Get_Item("telephonenumber")
    $fullname=$hashtbl.Get_Item("displayname")
    $office=$hashtbl.Get_Item("physicaldeliveryofficename")
    $email=$hashtbl.Get_Item("mail")
    Write-Host "UserID $accountId belongs to $fullname and he/she resides at $office with phone $tele & e-mail $email"

    The error rec'd is:
    You cannot call a method on a null-valued expression.
    At C:\documents and settings\usf48555\My Documents\scripts\UserQry.ps1:4 char:24
    + $tele=$hashtbl.Get_Item <<<< ("telephonenumber") + CategoryInfo : InvalidOperation: (Get_Item:String) [], RuntimeExcept ion + FullyQualifiedErrorId : InvokeMethodOnNull You cannot call a method on a null-valued expression. At C:\documents and settings\usf48555\My Documents\scripts\UserQry.ps1:5 char:28 + $fullname=$hashtbl.Get_Item <<<< ("displayname") + CategoryInfo : InvalidOperation: (Get_Item:String) [], RuntimeExcept ion + FullyQualifiedErrorId : InvokeMethodOnNull You cannot call a method on a null-valued expression. At C:\documents and settings\usf48555\My Documents\scripts\UserQry.ps1:6 char:26 + $office=$hashtbl.Get_Item <<<< ("physicaldeliveryofficename") + CategoryInfo : InvalidOperation: (Get_Item:String) [], RuntimeExcept ion + FullyQualifiedErrorId : InvokeMethodOnNull You cannot call a method on a null-valued expression. At C:\documents and settings\usf48555\My Documents\scripts\UserQry.ps1:7 char:25 + $email=$hashtbl.Get_Item <<<< ("mail") + CategoryInfo : InvalidOperation: (Get_Item:String) [], RuntimeExcept ion + FullyQualifiedErrorId : InvokeMethodOnNull

  • #10814
    Profile photo of Don Jones
    Don Jones
    Keymaster

    Variables are read as literals inside single quotes.

    PS> $x = "Hi"
    PS> $y = 'This is $x'
    PS> $y
    This is $x
    

    They are replaced in double quotes.

    PS> $x = "Hi"
    PS> $y = "This is $x"
    PS> $y
    This is Hi
    
  • #10857
    Profile photo of notarat
    notarat
    Participant

    I have been using powershell since March and this is the first time I noticed that. I'm such a dummy. LOL.

  • #10858
    Profile photo of rambog cnonline.net
    rambog cnonline.net
    Participant

    Thanks, Don. Having struggled looking at this code too long will hopefully help me to remember this caveat. The script now works.

You must be logged in to reply to this topic.