当我运行此命令:通过结果循环设置
$k = Get-Process | select Name -First 3
我得到这样的输出:
Name ---- AESTSr64 ApplicationFrameHost BtwRSupportService
我想每个结果放在一个字符串类型的独立的变量,并得到它的长度。我想知道如何访问返回的单个行。
我试过一个foreach如下:
foreach ($k in $three) {
write $k
}
得到
Name ---- AESTSr64 ApplicationFrameHost BtwRSupportService
我想只输出没有头和破折号的结果,并显示在同每个字符串的长度行(当我使用.ToString()
转换输入时,我得到空字符串和零长度,因为每个结果都被视为一个对象)。
我想这一点,但它产生了错误的长度:
foreach ($k in $three) {
$t = $k | Out-String
write ("{0} {1}", $t, $t.Length)
}
所以,我怎么能产生这样的:
AESTSr64 08 ApplicationFrameHost 20 BtwRSupportService 18
编辑得到
的一种方式想要的结果,使用下面的答案和注释:
$three = Get-Process | select -First 3 | ForEach-Object Name
foreach ($k in $three) {
[string]$c = "{0,-15} {1}" -f $k, $k.Length
Write-Host $c
}
'$ k' - >'$ k.Name' –
@ MathiasR.Jessen,非常好的评论,我改成了[string] $ t = $ k.Name,并且修正了长度。谢谢。 – NoChance
''[string]'是不必要的,'$ k。名字'已经是'string'类型了:) –