我有以下代码:
$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
答案 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 }