使用PowerShell输出没有列标题的数据

fen*_*ter 31 powershell

我希望能够在没有任何列标题的情况下从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)

这不是很漂亮,但可以让您轻松,完全地控制输出格式.并没有空行:-)

  • 这是一个格式字符串.通常格式字符串由大括号中的某些内容组成.首先是一个数字索引,它指的是要在其中替换要格式化的对象数组的哪个项目,您可以在逗号后面给出一个宽度.负力左对齐而不是右对齐.上面的示例将分别以10,10和60个字符的列输出命令类型,别名的名称和定义.一旦你理解了格式字符串的工作方式,这一切都有意义:-)(参考:http://msdn.microsoft.com/en-us/library/txafckwd.aspx) (5认同)

小智 29

如果您使用"format-table",则可以使用 -hidetableheaders

  • 请注意,这将根据要求隐藏标题,并删除任何空行:(get-qadgroupmember 'Domain Admins' | Select Name | ft -hidetableheaders | Out-String).trim() (3认同)
  • 请注意,这将截断长字段,并在取决于运行窗口时窗口宽度的位置附加省略号。 (2认同)
  • 请注意,问题不在于隐藏标题,而在于当您已经使用 `-hidetableheaders` 隐藏标题时产生的空行 (2认同)

小智 26

更好的答案是保持脚本不变.在做的时候Select name,请按照以下方式操作-ExpandProperty Name:

get-qadgroupmember 'Domain Admins' | Select Name -ExpandProperty Name | out-file Admins.txt
Run Code Online (Sandbox Code Playgroud)

  • `选择-ExpandProperty Name`就足够了,你在命令中没有重复两次`Name` (4认同)

小智 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)


小智 6

在 select-object 后面添加参数 -expandproperty,它将只返回没有标题的数据。