当我运行此命令时:
$k = Get-Process | select Name -First 3
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
姓名 ---- AESTSr64 应用框架主机 支持服务
我想将每个结果放在一个单独的字符串类型变量中并获取其长度。我想知道如何访问返回的单个行。
我尝试了一个 foreach 如下:
foreach ($k in $three) {
write $k
}
Run Code Online (Sandbox Code Playgroud)
要得到
姓名 ---- AESTSr64 应用框架主机 支持服务
我只想输出没有标题和破折号的结果,并在同一行上显示每个字符串的长度(当我使用转换输入时,.ToString()我得到空字符串和零长度,因为每个结果都被视为一个对象)。
我试过这个,但它产生了错误的长度:
foreach ($k in $three) {
$t = $k | Out-String
write ("{0} {1}", $t, $t.Length)
}
Run Code Online (Sandbox Code Playgroud)
那么我怎样才能产生这样的东西:
AESTSr64 08 应用框架主机 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
}
Run Code Online (Sandbox Code Playgroud)
你可以简单地做到:)
get-process | select Name, @{Name="NameLength";expression={$_.Name.length}} -first 3
Run Code Online (Sandbox Code Playgroud)
如果你想循环结果:
$list=get-process | select Name, @{Name="NameLength";expression={$_.Name.length}} -first 3
foreach ($item in $list)
{
write-host ("{0} {1}" -f $item.Name, $item.NameLength)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7401 次 |
| 最近记录: |