我试图在PowerShell 2.0上运行声明:
$fixDepositsDataFile = Import-Csv F:\Balink\PowershellScripts\Wbalqry0.CSV -Header "1"
$fixDepositsDataFile | %{
if ($_.1 -eq " ") {$_.1 = " "}
}
我得到了这个例外:
我在5.0上工作得很好,但运行脚本的服务器是2.0。
有什么办法可以避免这个问题?
答案 0 :(得分:2)
显然,您无法在PowerShell v2中将整数用作属性名称。有许多方法可以解决此问题。例如,您可以将属性放在表达式@PetSerAl建议($_.(1)
)或使用变量($p = 1; ... $_.$p ...
)。
我个人更喜欢将属性名称放在引号中:
$fixDepositsDataFile | ForEach-Object {
if ($_.'1' -eq " ") {$_.'1' = ""}
}
有关属性名称的报价也有助于缓解其他有问题的情况,例如:当属性名称包含空格时。