2015-05-19 124 views
1

我創建了數組$SQL_output。如果我做了foreach循環,它顯示的內容PowerShell沒有引用數組元素

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

輸出

118543 
44021 
84992 
46888 

當我把它添加到SQL語句

$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 
" 

的字符串擴展到

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 

如何f九?

+2

使用'$($ SQL_output [0])'。或者使用'-f'來格式化字符串並使用擴展作爲參數。 –

+2

[引用Powershell數組索引產生意想不到的結果時引用字符串]可能重複(http://stackoverflow.com/questions/8592677/referencing-powershell-array-index-produces-unexpected-results-when-referenced-w) –

+0

@EtanReisner這個工作,你能解釋爲什麼。我第一次看到這個符號。 – Glowie

回答

1

替換$ SQL_output [X]與$(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 
"