尝试在2.0版上运行PowerShell脚本

时间:2017-02-25 11:29:46

标签: powershell csv

我试图在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。

有什么办法可以避免这个问题?

1 个答案:

答案 0 :(得分:2)

显然,您无法在PowerShell v2中将整数用作属性名称。有许多方法可以解决此问题。例如,您可以将属性放在表达式@PetSerAl建议($_.(1))或使用变量($p = 1; ... $_.$p ...)。

我个人更喜欢将属性名称放在引号中:

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

有关属性名称的报价也有助于缓解其他有问题的情况,例如:当属性名称包含空格时。