【发布时间】:2018-12-29 23:01:30
【问题描述】:
我试图在一条记录通过管道时对其进行计数。我的表情是这样的:
$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 文件,以便在 gci 发出记录时无法让我的变量更改值时,我可以使用 Write-Host 遍历 Get-ChildItem (gci) 输出。
我是否错过了在 Select-Object 或 Add-Member 中增加变量的正确语法,还是无法做到这一点?
【问题讨论】:
-
Expression={ (([ref]$x).Value--) } -
@PetSerAl 谢谢!尽管我不清楚发生了什么,但这很有效。当我希望子例程中的操作影响子例程的全局变量时,我会想到“按引用”调用。在这种情况下,我没有看到“子程序”边界在哪里。
-
Select-Object在单独的范围内调用Expression。
标签: powershell