删除powershell输出中的空行

时间:2015-08-27 14:52:13

标签: powershell output

我正在尝试删除输出前后的空白行,但它只是不起作用。我在第一个Write-Host之后尝试添加-NoNewLine,但到目前为止只删除了一个空行。

代码:

  $tag1 = "c91638"

    Write-Host "Operating System Information"


    $OSInfo = get-wmiobject -class win32_operatingsystem -computername $tag1 

    $OSInfo `
        | Format-List `
            @{Name="OS Name";Expression={$_.Caption}}, 
            @{Name="OS Boot Time";Expression={$_.ConvertToDateTime($_.LastBootUpTime)}}, 
            @{Name="OS Install Date";Expression={$_.ConvertToDateTime($_.InstallDate)}}; 

    Write-Host "Line test.."

输出:

Operating System Information


OS Name         : Microsoft Windows 7 Enterprise 
OS Boot Time    : 8/27/2015 2:05:35 AM
OS Install Date : 4/4/2014 11:39:15 AM



Line test..

我想做什么:

Operating System Information

OS Name         : Microsoft Windows 7 Enterprise 
OS Boot Time    : 8/27/2015 2:05:35 AM
OS Install Date : 4/4/2014 11:39:15 AM

Line test..

2 个答案:

答案 0 :(得分:14)

请改为尝试:

($OSInfo `
    | Format-List `
        @{Name="OS Name";Expression={$_.Caption}}, 
        @{Name="OS Boot Time";Expression={$_.ConvertToDateTime($_.LastBootUpTime)}}, 
        @{Name="OS Install Date";Expression={$_.ConvertToDateTime($_.InstallDate)}}  `
    | Out-String).Trim()

这将清除Format-List产生的所有无关的空白行。您可能需要插入自己控制的几个。

答案 1 :(得分:4)

只是添加一条评论,因为我发现这一切都在进行,即使是现在 - Format-ListFormat-Table用于在控制台中输出文字

如果您要将对象输出为文本文件,CSV等,那么您只需Select-Object来抓取所需的对象,而不是ftfl。然后,如果需要文本格式,则可以应用Out-String

上面的例子应该是:

($OSInfo `
| Select-Object `
    @{Name="OS Name";Expression={$_.Caption}}, 
    ... `
| Out-String).Trim()