2016-08-02 146 views
0
$info = Invoke-SQLCmd -ServerInstance $Server -Database $Database -inputfile "$queriespath/compare_quantity.sql" 
$changes = $info.length 
for($i=0; $i-le$changes; $i++) { 
    $text = "Revise,$info[$i].quantity,$info[$i].itemid" | Set-Content  'C:\Users\pmaho\Dropbox\SAMPOWERSPORTS\CustomChrome\revision.txt' 
} 

我試圖將$ info [$ i] .quantity,$ info [$ i] .itemid的值寫入文件。將變量寫入文件

這是我的代碼輸出現在 修改,的System.Data.DataRow的System.Data.DataRow [2] .quantity,的System.Data.DataRow的System.Data.DataRow [2] .itemid

我想要說出可變物的實際價值,我該怎麼做?

編輯:

for($i=0; $i-le$changes; $i++) { 
$text = $($info[$i].quantity) | Set-Content 'C:\Users\pmaho\Dropbox\SAMPOWERSPORTS\CustomChrome\revision.txt' 
} 

上面是打印什麼。

+2

的可能的複製[?你怎麼能在一個字符串中使用一個對象的屬性(http://stackoverflow.com/questions/ 1145704 /如何使用一個對象屬性在一個字符串) – briantist

+0

該帖子沒有幫助。我正在嘗試使用括號,並且無法正確識別 –

+0

通過將它放入問題中告訴我們你在做什麼。 – briantist

回答

0
for($i=0; $i-le$changes; $i++) { 
    $text = "$(Revise,$info[$i].quantity,$info[$i].itemid)" | Set-Content  'C:\Users\pmaho\Dropbox\SAMPOWERSPORTS\CustomChrome\revision.txt' 
} 

的$()只是告訴PowerShell來解釋包含在括號中的表達式,你仍然需要引號指定一個字符串值的變量。

0

您在這裏遇到了字符串擴展問題。

就拿這個屬性,例如:

$e = [psobject]@{Name='StackOverFlow';URL='http://stackoverflow.com'} 
$e.URL 
> http://stackoverflow.com 

這個工程作爲預期。然而,當我嘗試用引號括整個事情,看看會發生什麼:

"the URL of StackOverflow is $e.Url" 
>the URL of StackOverflow is System.Collections.Hashtable.Url 

通知追加到年底有瘸腿「律.Url? PowerShell爲我做了字符串擴展,但它通過從左到右掃描併爲我們放入變量值來實現這一點,但它不檢查是否真的在屬性或方法名稱之後。它只是認爲I see $e, let me replace it with what I've got for $e。煩!

所以解決這個問題的簡單方法是使用運算符號的順序(記得請-藉口 - 我 - 親愛的姨媽,薩莉?括號,指數,乘法,除法,加法,減法),只是包裹屬性引用括號內。

在我的例子中,我會這樣做。

"the URL of StackOverflow is $($e.Url)" 
> the URL of StackOverflow is http://stackoverflow.com 

再回到你的問題,試試這個來代替:

"Revise,$($info[$i].quantity),$($info[$i].itemid)" | 
    Set-Content 'C:\Users\pmaho\Dropbox\SAMPOWERSPORTS\CustomChrome\revision.txt'