Powershell 如何在没有换行符的情况下使用write-to-stdout?

Powershell 如何在没有换行符的情况下使用write-to-stdout?,powershell,stdout,Powershell,Stdout,使用Write Output命令时,会自动追加新行。如何在没有换行符的情况下将字符串写入标准输出 例如: powershell -command "write-output A; write-output B" 产出: A B (写入主机不好-它将数据写入控制台本身,而不是标准输出流)写入输出没有添加换行符 试试这个: filter intchar {[int[]][char[]]$_} '123' | Write-Output | intchar 49 50 51 筛选器正在将字符串

使用
Write Output
命令时,会自动追加新行。如何在没有换行符的情况下将字符串写入标准输出

例如:

powershell -command "write-output A; write-output B"
产出:

A
B

写入主机
不好-它将数据写入控制台本身,而不是标准输出流)

写入输出
没有添加换行符

试试这个:

filter intchar {[int[]][char[]]$_}

'123' | Write-Output | intchar

49
50
51
筛选器正在将字符串转换为每个字符的ASCII int表示形式。没有添加换行符

添加两个显式换行符以进行比较:

"1`n2`n3" | write-output | intchar

49
10
50
10
51
现在我们看到了字符之间的额外换行符,但仍然没有添加到字符串的换行符


不确定您的应用程序是什么,但如果您的输出中出现了不需要的换行符,我不认为是
写输出
起作用。

写输出
没有附加换行符

试试这个:

filter intchar {[int[]][char[]]$_}

'123' | Write-Output | intchar

49
50
51
筛选器正在将字符串转换为每个字符的ASCII int表示形式。没有添加换行符

添加两个显式换行符以进行比较:

"1`n2`n3" | write-output | intchar

49
10
50
10
51
现在我们看到了字符之间的额外换行符,但仍然没有添加到字符串的换行符


不确定您的应用程序是什么,但如果您的输出中出现了不需要的换行符,我不认为是
Write output

Write output
将对象写入管道,而不是像*nix那样的文本。它不做任何类型的文本格式化,比如添加换行符,因此不需要换行符处理选项。我经常看到人们没有意识到这一点

如果您指的是控制台输出上打印的换行符,这是因为管道最终总是由终止的,它将转发到默认的输出目标(通常为
Out Host
),如果它没有接收格式化的输入,则通过适当的默认格式化程序运行对象(通常是
格式列表
格式表
)。此处的格式化程序是流程中唯一负责格式化输出的程序,例如,在控制台输出的新行上打印每个对象


您可以通过在管道末尾指定您喜欢的格式设置程序来覆盖此默认行为,包括您自己使用的格式设置程序。

Write Output
在管道中写入对象,而不是像*nix中那样写入文本。它不执行任何类型的文本格式设置,例如追加换行符,因此不需要换行符处理选项我经常看到人们没有意识到这一点

如果您指的是控制台输出上打印的换行符,这是因为管道最终总是由终止的,它将转发到默认的输出目标(通常为
Out Host
),如果它没有接收格式化的输入,则通过适当的默认格式化程序运行对象(通常是
格式列表
格式表
)。此处的格式化程序是流程中唯一负责格式化输出的程序,例如,在控制台输出的新行上打印每个对象


您可以通过在管道末尾指定您喜欢的格式化程序来覆盖此默认行为,包括您自己的使用。

mjolinor/famousgarkin解释为什么输出中有一行本身不是由
Write output
生成的。处理此问题的简单方法是使用
Write-O构建输出字符串输出

$text = ("This","is","some","words") -join " "; 
$string = Write-Output $text
$string += Write-Output $text
$string
输出

This is some wordsThis is some words

mjolinor/famousgarkin解释了为什么输出有一个新行,而该新行不是由
写输出
生成的。处理这个问题的简单方法是使用
写输出
构建输出字符串

$text = ("This","is","some","words") -join " "; 
$string = Write-Output $text
$string += Write-Output $text
$string
输出

This is some wordsThis is some words

@emperueuraiman Nope可能重复,这不是同一个问题。newoline对输出的方向不好吗?否则只需构建输出的字符串或字符串数组来控制换行符
$text=(“this”、“is”、“some”、“words”)-join;Write Output$text
可能重复@emperueraiman Nope,这不是同一个问题。newoline对输出的方向不好吗?否则只需构建输出的字符串或字符串数组来控制换行符
$text=(“this”、“is”、“some”、“words”)-连接“;Write Output$text
这很奇怪,因为
powershell-命令“Write Output A;Write Output B”
包含一个换行符。它来自何处?默认情况下,换行符被添加到未终止的管道上,自动附加到未终止的管道上。默认情况下,Out-Default的默认值是Out-Host。这很奇怪,因为
powershell-command“write output a;write output B”
包含一个换行符。它来自何处?默认情况下,将添加换行符,该换行符将自动附加到未终止的管道上。默认情况下,Out Host是Out Default的默认值。