首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在PowerShell中输出没有换行符的文本?

如何在PowerShell中输出没有换行符的文本?
EN

Stack Overflow用户
提问于 2010-10-09 23:49:33
回答 14查看 282.6K关注 0票数 183

我希望我的PowerShell脚本打印如下内容:

代码语言:javascript
运行
复制
Enabling feature XYZ......Done

该脚本如下所示:

代码语言:javascript
运行
复制
Write-Output "Enabling feature XYZ......."
Enable-SPFeature...
Write-Output "Done"

但是Write-Output总是在末尾打印一个新行,所以我的输出不是在一行上。有没有办法做到这一点?

EN

回答 14

Stack Overflow用户

发布于 2015-09-15 22:05:10

不幸的是,正如在一些回答和评论中指出的那样,Write-Host可能是危险的,并且不能通过管道传输到其他进程,并且Write-Output没有-NoNewline标志。

但这些方法是显示进度的"*nix“方式," PowerShell”方式似乎是Write-Progress:它在PowerShell窗口的顶部显示进度信息栏,从PowerShell 3.0开始提供,see manual提供详细信息。

代码语言:javascript
运行
复制
# Total time to sleep
$start_sleep = 120

# Time to sleep between each notification
$sleep_iteration = 30

Write-Output ( "Sleeping {0} seconds ... " -f ($start_sleep) )
for ($i=1 ; $i -le ([int]$start_sleep/$sleep_iteration) ; $i++) {
    Start-Sleep -Seconds $sleep_iteration
    Write-Progress -CurrentOperation ("Sleep {0}s" -f ($start_sleep)) ( " {0}s ..." -f ($i*$sleep_iteration) )
}
Write-Progress -CurrentOperation ("Sleep {0}s" -f ($start_sleep)) -Completed "Done waiting for X to finish"

以OP的例子为例:

代码语言:javascript
运行
复制
# For the file log
Write-Output "Enabling feature XYZ"

# For the operator
Write-Progress -CurrentOperation "EnablingFeatureXYZ" ( "Enabling feature XYZ ... " )

Enable-SPFeature...

# For the operator
Write-Progress -CurrentOperation "EnablingFeatureXYZ" ( "Enabling feature XYZ ... Done" )

# For the log file
Write-Output "Feature XYZ enabled"
票数 56
EN

Stack Overflow用户

发布于 2013-02-14 10:00:29

虽然它在您的情况下可能不起作用(因为您向用户提供了信息性输出),但您可以创建一个可用于附加输出的字符串。当需要输出时,只需输出字符串即可。

当然,忽略这个例子在你的例子中是愚蠢的,但在概念上是有用的:

代码语言:javascript
运行
复制
$output = "Enabling feature XYZ......."
Enable-SPFeature...
$output += "Done"
Write-Output $output

显示:

代码语言:javascript
运行
复制
Enabling feature XYZ.......Done
票数 10
EN

Stack Overflow用户

发布于 2012-03-06 19:34:42

要写入文件,可以使用字节数组。下面的示例创建一个空的ZIP文件,您可以向其中添加文件:

代码语言:javascript
运行
复制
[Byte[]] $zipHeader = 80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
[System.IO.File]::WriteAllBytes("C:\My.zip", $zipHeader)

或使用:

代码语言:javascript
运行
复制
[Byte[]] $text = [System.Text.Encoding]::UTF8.getBytes("Enabling feature XYZ.......")
[System.IO.File]::WriteAllBytes("C:\My.zip", $text)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3896258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档