如何去除PSCustomObject输出末尾的空行(无需转为字符串)
解决PSCustomObject输出末尾空行的非字符串转换方法
直接输出[PSCustomObject]实例时,PowerShell默认格式化会在末尾添加空行,不用转字符串的解决办法如下:
手动控制输出格式
直接拼接属性并通过Write-Host输出,用-NoNewline取消默认的末尾换行:Write-Host "Name : $($myObject.Name)`nLanguage : $($myObject.Language)`nState : $($myObject.State)" -NoNewline这种方式完全自定义输出内容,精准控制换行,不会产生多余空行。
按行过滤空行后输出
借助Out-String -Stream将格式化输出拆分为行对象,过滤掉空行后再输出:$myObject | Format-List | Out-String -Stream | Where-Object { $_ -ne '' } | Write-Output这里没有把整个输出转为单个字符串,而是对行对象进行处理,最终输出的内容末尾无空行。
自定义类型格式化(适合长期复用)
给PSCustomObject添加自定义格式化视图,让默认输出不带空行。临时配置示例:$formatData = @" <Configuration> <ViewDefinitions> <View> <Name>CustomPSObject</Name> <ViewSelectedBy> <TypeName>System.Management.Automation.PSCustomObject</TypeName> </ViewSelectedBy> <TableControl> <TableHeaders> <TableColumnHeader> <Label>Name</Label> </TableColumnHeader> <TableColumnHeader> <Label>Language</Label> </TableColumnHeader> <TableColumnHeader> <Label>State</Label> </TableColumnHeader> </TableHeaders> <TableRowEntries> <TableRowEntry> <TableColumnItems> <TableColumnItem> <PropertyName>Name</PropertyName> </TableColumnItem> <TableColumnItem> <PropertyName>Language</PropertyName> </TableColumnItem> <TableColumnItem> <PropertyName>State</PropertyName> </TableColumnItem> </TableColumnItems> </TableRowEntry> </TableRowEntries> </TableControl> </View> </ViewDefinitions> </Configuration> "@ $formatData | Out-File -Path "$env:TEMP\CustomPSObject.format.ps1xml" Update-FormatData -PrependPath "$env:TEMP\CustomPSObject.format.ps1xml"执行后,所有PSCustomObject的默认输出都会使用这个自定义表格格式,不会带末尾空行。
内容的提问来源于stack exchange,提问作者dcaz
相关产品推荐
相关产品推荐

