2017-02-25 54 views
1

我試圖在PowerShell 2.0中運行statment運行PowerShell腳本:試圖在2.0版

$fixDepositsDataFile = Import-Csv F:\Balink\PowershellScripts\Wbalqry0.CSV -Header "1" 
$fixDepositsDataFile | %{ 
    if ($_.1 -eq " ") {$_.1 = " "} 
} 

而且我得到這個異常:

enter image description here

我的工作完美的5.0,但運行腳本的服務器是2.0。

有什麼辦法可以避免這個問題?

+0

'.1' - >'。(1)' – PetSerAl

+0

沒有下劃線?像這樣:if($(。1)-eq「」){$(。1)=「」}?因爲它不起作用= \ –

+2

像這樣:'$ _。(1)'。 – PetSerAl

回答

2

顯然,您不能在PowerShell v2中使用整數作爲屬性名稱。有很多方法可以解決這個問題。例如,您可以將該屬性設置爲建議的@PetSerAl$_.(1))或使用變量($p = 1; ... $_.$p ...)。

我個人更喜歡把屬性名引號:圍繞屬性名稱

$fixDepositsDataFile | ForEach-Object { 
    if ($_.'1' -eq " ") {$_.'1' = ""} 
} 

行情也有助於減輕其他問題的情況下,例如當一個屬性名稱包含空格時。

+0

感謝您的詳細解答 –

+0

值得注意的是,報價不會解決OP的問題 –

+0

爲什麼他們不?我沒有一個真正的PS2,但引用幫助在PS5啓動爲V2:'powershell -version 2 -c「$ s = [pscustomobject] @ {'1'='a'}; $ s.'1'」' – wOxxOm