以下作品但很难看。
> Get-CimInstance win32_process | `
select -first 5
foreach { $process = $_; $process; } | # this is ugly
foreach { write $process.ProcessName }
System Idle Process
System
smss.exe
csrss.exe
wininit.exe
我们已经尝试过了,但它并没有奏效。
> Get-CimInstance win32_process |
select -first 5
foreach { Set-Variable $c -PassThru } | # this is prettier
foreach { write $c.ProcessName }
wininit.exe
wininit.exe
wininit.exe
wininit.exe
wininit.exe
我们如何让Set-Variable
工作?
答案 0 :(得分:1)
您没有在set-variable调用中为变量设置值,并且名称不应该有$符号
PS C:\> 1,2,3 | ForEach { Set-Variable -Name c -Value $_ -PassThru } | ForEach { "-$c-" }
-1-
-2-
-3-
虽然我不知道变量值是如何/与流水线同步的,或者它是否可能不同步。
怎么样?$names = foreach ($c in Get-CimInstance win32_process | Select -First 5) {
write $c.ProcessName
}
这里使用的是CimInstance
。
PS C:\> Get-CimInstance win32_process | `
select -first 5 | `
foreach { Set-Variable -name process -value $_ -PassThru } | `
foreach { write $process.ProcessName }
System Idle Process
System
smss.exe
csrss.exe
wininit.exe