Pao*_*sco 8 sorting powershell
是否可以按属性名称对Format-List cmdlet的输出进行排序?
假设我有一个带有两个属性"A"和"B"的对象$ x,当我用它运行Format-List时,我得到了
(PS) > $x | Format-List
B : value b
A : value a
Run Code Online (Sandbox Code Playgroud)
我想拥有
(PS) > $x | Format-List
A : value a
B : value b
Run Code Online (Sandbox Code Playgroud)
注意:我应该从一开始就指定,与具有"A"和"B"属性的示例不同,我必须处理的真实对象具有相当多的属性,并且将来可以添加新的属性,所以我事先并不知道所有的房产名称.
jim*_*gee 12
接受的答案没有任何问题,但是一次性的真正快速而肮脏的选择(不需要将集合已经存在于变量中)可能是......
... | Format-List | Out-String -Stream | Sort-Object
Run Code Online (Sandbox Code Playgroud)
...它对 输出的每一行进行排序Format-List
。
请注意,进入下一行的任何属性值都将被破坏(并且可能出现在输出的顶部),但这可以通过稍微不太令人难忘的方法来修复...
... | Format-List | Out-String -Stream -Width ([Int32]::MaxValue) | Sort-Object
Run Code Online (Sandbox Code Playgroud)
...以牺牲列缩进为代价。
当然,所有对象/管道信息都会因该Out-String
调用而丢失,尽管考虑到同样的情况Format-List
,您可能不会在意这一点。
Rom*_*min 10
AFAIK,Format-List
没有提供这样的选择.
对于您的特定示例,这应该工作:
$x | Select-Object A, B | Format-List
Run Code Online (Sandbox Code Playgroud)
如果属性集不是固定/已知的,那么使用Get-Member
和一些预处理制作排序参数数组的过程将更加棘手Select-Object
.
编辑:
这是(让我们使用$ host而不是$ x):
$host | Select-Object ([string[]]($host | Get-Member -MemberType Property | %{ $_.Name } | Sort-Object)) | Format-List
Run Code Online (Sandbox Code Playgroud)
克里斯托弗是对的,Select-Object
并非绝对需要:
$host | Format-List ([string[]]($host | Get-Member -MemberType Property | %{ $_.Name } | Sort-Object))
Run Code Online (Sandbox Code Playgroud)
扩展克里斯托弗的想法,使用get-member
和format-list -Property
:
$x | fl -property ($x| gm | sort name).name
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17631 次 |
最近记录: |