我希望能够在没有任何列标题的情况下从PowerShell输出数据.我知道我可以隐藏列标题使用Format-Table -HideTableHeaders,但在顶部留下一个空行.
这是我的例子:
get-qadgroupmember 'Domain Admins' | Select Name | ft -hide | out-file Admins.txt
Run Code Online (Sandbox Code Playgroud)
如何消除列标题和空白行?
我可以添加另一行并执行此操作:
Get-Content Admins.txt | Where {$_ -ne ""} | out-file Admins1.txt
Run Code Online (Sandbox Code Playgroud)
但我能在一条线上做到这一点吗?
Joe*_*oey 44
在您的情况下,当您只选择一个属性时,最简单的方法可能是完全绕过任何格式:
get-qadgroupmember 'Domain Admins' | foreach { $_.Name }
Run Code Online (Sandbox Code Playgroud)
这将使您在string[]没有列标题或空行的情况下变得简单.的Format-*小命令主要是用于人类消费,因此它们的输出不被设计为容易地机器可读或-parseable.
对于多个属性,我可能会使用-f格式运算符.有点像
alias | %{ "{0,-10}{1,-10}{2,-60}" -f $_.COmmandType,$_.Name,$_.Definition }
Run Code Online (Sandbox Code Playgroud)
这不是很漂亮,但可以让您轻松,完全地控制输出格式.并没有空行:-)
小智 29
如果您使用"format-table",则可以使用 -hidetableheaders
小智 26
更好的答案是保持脚本不变.在做的时候Select name,请按照以下方式操作-ExpandProperty Name:
get-qadgroupmember 'Domain Admins' | Select Name -ExpandProperty Name | out-file Admins.txt
Run Code Online (Sandbox Code Playgroud)
        小智 7
-expand 属性不适用于 1 个以上的对象。你可以使用这个:
Select-Object Name | ForEach-Object {$_.Name}
Run Code Online (Sandbox Code Playgroud)
如果有多个值,则:
Select-Object Name, Country | ForEach-Object {$_.Name + " " + $Country}
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           160177 次  |  
        
|   最近记录:  |