basic conditional- wrong results ?!

  • Please let me preface this with: I am a powershell rookie... not a developer at all, just learning.

    I'm writing some code which goes out to a table and pulls back some valuse, but when I do a test, the reusult is not what I expect...

    here's the code:

    #go to the database and pull out the value - which I know to be 0

    $specialmondays=Invoke-sqlcmd -ServerInstance "MYSERVER" -Database MYDB -Query "Select specialmondays from msdb.dbo.serverdescriptions where servername='$instance' "

    #change that one record table result to a string and store it in a variable

    $specialmondaysvalue=$specialmondays[0]|out-string

    "mondaysvariable is $specialmondaysvalue" #this is here just for debugging and outputs 0 as expected

    #test

    if ( $specialmondaysvalue -eq 0)

    {

    "test returned true" #this is here just for debugging

    }

    else

    {"testisfalse"}

    my results look like:

    mondaysvariable is 0

    testisfalse

    can someone explain what I'm doing wrong? I've looked up all the conditional and I thought this test should be true...

    Also, there must be a better way to work with the result of my query than "$specialmondaysvalue=$specialmondays[0]|out-string"

    but anything else I do seems to call it System.Data.Row (or something very close to that)...

    Any and all assistance is greatly appreciated.

  • I tried the following and got the correct results. Perhaps others can chime in on why this behaves like it does:

    Change:

    if ( $specialmondaysvalue -eq 0)

    To:

    if ( $specialmondaysvalue.Trim() -eq 0)

    The whitespace is causing the comparison to not be truly equal. Another route would be to change

    $specialmondaysvalue=$specialmondays[0]|out-string

    to

    $specialmondaysvalue=$specialmondays[0].ToString()

    - Jeff

  • Thank you!

Viewing 3 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic. Login to reply