2017-02-25 5 views
1

にPowerShellスクリプトを実行しようとすると、私はPowerShellの2.0上なステートメントを実行しようとしている:バージョン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を持っていないが、v2として起動したPS5の助けを引用している: 'powershell -version 2 -c" $ s = [pscustomobject] @ {'1' = 'a'}; $ s.'1 ' – wOxxOm

関連する問題