Glowie
Glowie

Reputation: 2309

PowerShell not referencing array elements

I created array $SQL_output. If I do a foreach loop, it displays the contents

foreach ($j in $SQL_output){
    write-host $j
}

Output

118543
44021
84992
46888

When I add it to SQL statement

$SQL_UPDATE = "BEGIN
                  IF NOT EXISTS (SELECT 1
                                 FROM dbo.Stats
                                 WHERE Date_of_Download = CAST(GETDATE() AS DATE))
                  BEGIN
                      INSERT INTO dbo.Stats (Date_of_Download, Windows_SEP_11, Mac_SEP_11, Windows_SEP_12, Mac_SEP_12)
                      VALUES (CAST(GETDATE() AS DATE), $SQL_output[0],$SQL_output[1],$SQL_output[2],$SQL_output[3])
                  END
              END
"

The string expands to

BEGIN
                  IF NOT EXISTS (SELECT 1
                                 FROM dbo.Stats
                                 WHERE Date_of_Download = CAST(GETDATE() AS DATE))
                  BEGIN
                      INSERT INTO dbo.Stats (Date_of_Download, Windows_SEP_11, Mac_SEP_11, Windows_SEP_12, Mac_SEP_12)
                      VALUES (CAST(GETDATE() AS DATE), 118543 44021 84992 46888[0],118543 44021 84992 46888[1],118543 44021 84992 46888[2],118543 44021 84992 46888[3])
                  END
              END

How to fix?

Upvotes: 1

Views: 61

Answers (1)

dugas
dugas

Reputation: 12483

Replace $SQL_output[x] with $(SQL_output[x])

$SQL_UPDATE = "BEGIN
              IF NOT EXISTS (SELECT 1
                             FROM dbo.Stats
                             WHERE Date_of_Download = CAST(GETDATE() AS DATE))
              BEGIN
                  INSERT INTO dbo.Stats (Date_of_Download, Windows_SEP_11, Mac_SEP_11, Windows_SEP_12, Mac_SEP_12)
                  VALUES (CAST(GETDATE() AS DATE), $($SQL_output[0]),$($SQL_output[1]),$($SQL_output[2]),$($SQL_output[3]))
              END
          END
"

Upvotes: 1

Related Questions