如何在表达式中增加变量的值?

时间:2011-01-31 22:22:26

标签: powershell

我有以下代码:

$b = 1
Import-Csv c:\Awsaf\powershell\Beforenew.csv | select name, CustomAttribute1, CustomAttribute2, @{n='Counter';e={$b}} | Export-Csv -NoTypeInformation c:\Awsaf\PowerShell\afternew.csv

我想将$ b的值递增1.我已经尝试了$ b ++,$ b + =,for循环,do-while,似乎没有任何工作。我该怎么办?

我还尝试了以下附加代码,但我无法弄清楚如何增加$ b的值。

$b = 0
Import-CSV c:\Awsaf\powershell\afternew.csv -Delimiter ',' | `
ForEach-Object { $_.Counter = "$b"; return $_ } | `
Export-CSV c:\awsaf\powershell\afterX.csv -Delimiter ',' -NoTypeInformation

3 个答案:

答案 0 :(得分:11)

对变量'b'使用显式脚本范围。增量(++)后,不要忘记输出值。

以下是适用于我的代码(它是您的稍微更改版本):

# Prepare some data for the test
Get-ChildItem | Select-Object Name | Export-Csv test1.csv -NoTypeInformation

# 1) Use explicit script scope for the variable 'b'
# 2) After increment (++) do not forget to output it
$script:b = 0
Import-Csv test1.csv |
select Name, @{n='Counter'; e={$script:b++; $script:b}} |
Export-Csv -NoTypeInformation test2.csv

答案 1 :(得分:1)

这是一个轻微的变化,因为我需要一个字符串。罗马的花括号不带字符串。你需要使用括号:

`"$($script:b++; $script:b)"`

答案 2 :(得分:0)

哦选项(虽然不那么漂亮)是使用Add-Member。您在ForEach-Object

中尝试了此操作
gci | 
  select Name | 
  % -beg {$counter=0} {$counter++; Add-Member -in $_ -name Test NoteProperty $counter -pass }