删除 powershell 输出中的空行
Remove blank lines in 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..
试试这个:
($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
产生的所有无关空白行。您可能需要插入几个您自己可以控制的。
只是想补充一点,因为我看到这种情况一直在发生,即使是现在 - Format-List
和 Format-Table
应该 仅 用于在控制台中输出文本。
如果您有对象要输出为文本文件、CSV 等,那么您应该 Select-Object
获取您想要的对象而不是 ft
或 fl
。如果需要文本格式,您可以应用 Out-String
。
上面的例子应该是:
($OSInfo `
| Select-Object `
@{Name="OS Name";Expression={$_.Caption}},
... `
| Out-String).Trim()
使用 .Trim()
太过分了,因为它会删除前导和尾随空格以及空白行。如果你只想删除空行,试试这个,在任何导致字符串的代码之后,做:
$result.Trim("`r","`n")
或者对于许多字符串,例如在 Format-Table
或类似的之后:
$results | Format-Table | Out-String | ForEach-Object { $_.Trim("`r","`n") }
我试图删除输出前后的空白行,但它不起作用。我尝试在第一个 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..
试试这个:
($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
产生的所有无关空白行。您可能需要插入几个您自己可以控制的。
只是想补充一点,因为我看到这种情况一直在发生,即使是现在 - Format-List
和 Format-Table
应该 仅 用于在控制台中输出文本。
如果您有对象要输出为文本文件、CSV 等,那么您应该 Select-Object
获取您想要的对象而不是 ft
或 fl
。如果需要文本格式,您可以应用 Out-String
。
上面的例子应该是:
($OSInfo `
| Select-Object `
@{Name="OS Name";Expression={$_.Caption}},
... `
| Out-String).Trim()
使用 .Trim()
太过分了,因为它会删除前导和尾随空格以及空白行。如果你只想删除空行,试试这个,在任何导致字符串的代码之后,做:
$result.Trim("`r","`n")
或者对于许多字符串,例如在 Format-Table
或类似的之后:
$results | Format-Table | Out-String | ForEach-Object { $_.Trim("`r","`n") }