PowerShell:没有标题的格式表

Pao*_*sco 16 powershell formatting

在PowerShell脚本中,我有一些传递给Format-TableCmdLet的对象.
我的脚本输出如下所示:

Something...

Operation AttributeName  AttributeValue
--------- -------------  --------------
Delete    Member         John Doe

Something else...
Run Code Online (Sandbox Code Playgroud)

由于字段的含义非常明显,我想从Format-Table的输出中删除标题,'---'分隔符和开头和结尾的空行.
我不认为CmdLet支持这个(或者至少如果有一个参数来做这个我找不到它).

将Format-Table的输出中只包含实际值的行的最佳方法是什么?

Jay*_*uzi 29

尝试-HideTableHeaders参数Format-Table:

gci | ft -HideTableHeaders
Run Code Online (Sandbox Code Playgroud)

(我正在使用PowerShell v2.我不知道这是否在v1中.)


Joe*_*oey 7

-HideTableHeaders遗憾的是,该参数仍会导致打印空行(并且表头仍然会考虑列宽).我知道可以在这里可靠工作的唯一方法是自己格式化输出:

| % { '{0,10} {1,20} {2,20}' -f $_.Operation,$_.AttributeName,$_.AttributeValue }
Run Code Online (Sandbox Code Playgroud)


KER*_*ERR 7

试试-ExpandProperty.例如,我使用它来发送clean变量Out-Gridview -PassThru,否则变量会存储标题信息.请注意,如果要返回多个属性,这些并不是很好.

一个例子:

Get-ADUser -filter * | select name -expandproperty name
Run Code Online (Sandbox Code Playgroud)

或者,你可以这样做:

(Get-ADUser -filter * ).name
Run Code Online (Sandbox Code Playgroud)


小智 6

这是我解决这个问题的方法。我只是将输出通过管道传输到 Out-String,然后将该输出传递给 .NET Trim 函数:

(gci | ft -HideTableHeaders | Out-String).Trim()
Run Code Online (Sandbox Code Playgroud)

这将删除表格前后的换行符。

如果您仍然需要尾部换行符,您还可以使用 TrimStart 来处理标题的换行符。

(gci | ft -HideTableHeaders | Out-String).TrimStart()
Run Code Online (Sandbox Code Playgroud)