是否可以增加PowerShell管道变量?

时间:2017-06-03 22:05:07

标签: powershell

我正在尝试通过管道计算记录。我的表情看起来像:

$x=28 
gci | Select-Object basename, fullname, @{name='x'; Expression={($x--)}}

我明白了:

BaseName FullName                x
-------- --------                -
aaoeu    C:\Users\m\x\aaoeu.txt 28
aue      C:\Users\m\x\aue.txt   28
xx       C:\Users\m\x\xx.txt    28

我已经尝试了Add-Member而不是上面的@表达式并且做了同样的事情 - x不会改变每个对象的值。

我的最终目标是生成一个CSV文件,这样我就可以使用Write-Host来迭代Get-ChildItem(gci)输出,如果gci发出记录时无法让我的变量改变值。

我是否错过了在Select-Object或Add-Member中增加变量的正确语法,或者只是不可能这样做?

3 个答案:

答案 0 :(得分:1)

解决方案2(使用全局变量):

$global:x=28 
Get-ChildItem | select-object basename,fullname,@{name='x'; Expression={($global:x--)}}

简短版本:

$global:x=28 
gci | select basename,fullname,@{N='x'; E={($global:x--)}}

答案 1 :(得分:0)

解决方案1(foreach可以找到变量):

$x=28 
gci | %{ $x++; [pscustomobject]@{BaseName=$_.BaseName; FullName=$_.FullName; x=$x}}

答案 2 :(得分:0)

解决方案3(声明进入循环):

dataInputStream.readLine();
dataInputStream.readByte();
dataInputStream.read();