首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PowerShell中输出内容

如何在PowerShell中输出内容
EN

Stack Overflow用户
提问于 2010-01-11 03:08:08
回答 7查看 646.8K关注 0票数 234

我正在从一个批处理文件中运行一个PowerShell脚本。该脚本获取一个网页,并检查该网页的内容是否为字符串"OK“。

PowerShell脚本将错误级别返回给批处理脚本。

批处理脚本由FTP自动化程序ScriptFTP执行。如果发生错误,我可以让ScriptFTP通过电子邮件将完整的控制台输出发送给管理员。

在PowerShell脚本中,如果返回值不是"OK",我希望输出来自web站点的返回值,这样错误消息就会包含在控制台输出中,从而包含在状态邮件中。

我是PowerShell的新手,不确定使用哪个输出函数来实现这一点。我能看到三个:

  • Write-Host
  • Write-Output
  • Write-Error

什么是正确的东西用来写到视窗的stdout等效物

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-01-12 00:01:47

简单地输出一些东西就是PowerShell是一件很美的事情--也是它最大的优点之一。例如,常见的Hello,World!应用程序简化为一行:

"Hello, World!"

它创建一个string对象,分配前述的值,作为命令管道上的最后一项,它调用.toString()方法并将结果输出到STDOUT (默认情况下)。一件美丽的事情。

其他Write-*命令特定于将文本输出到与其相关联的流,并有其各自的位置。

票数 216
EN

Stack Overflow用户

发布于 2010-01-11 03:56:41

我认为在这种情况下,您将需要Write-Output

如果你有像这样的脚本

Write-Output "test1";
Write-Host "test2";
"test3";

然后,如果您调用带有重定向输出的脚本,例如yourscript.ps1 > out.txt,您将在屏幕test1\ntest3\n中的"out.txt“中获得test2

请注意,"test3“和写输出行总是会在文本后追加一个新行,在PowerShell中没有办法停止这一操作(也就是说,在使用本机命令的PowerShell中,echo -n是不可能的)。如果您想要echo -n的功能(Bash中的一些基础和简单的功能),请参阅samthebest's answer

如果批处理文件运行PowerShell命令,它很可能会捕获写输出命令。我与系统管理员进行了“长时间的讨论”,讨论哪些内容应该写入控制台,哪些内容不应该写入。我们现在已经同意,如果脚本成功执行或终止,唯一的信息必须是Write-Host'ed,脚本作者可能需要知道的所有关于执行的信息(哪些项被更新,哪些字段被设置,等等)被写入输出。这样,当您向系统管理员提交脚本时,他可以轻松地runthescript.ps1 >someredirectedoutput.txt并在屏幕上看到,如果一切正常。然后将"someredirectedoutput.txt“发回给开发人员。

票数 130
EN

Stack Overflow用户

发布于 2016-01-16 03:54:54

我认为下面是Echo和Write-Host的一个很好的例子。注意test()实际上是如何返回一个int数组的,而不是一个很容易让人相信的int数组。

function test {
    Write-Host 123
    echo 456 # AKA 'Write-Output'
    return 789
}

$x = test

Write-Host "x of type '$($x.GetType().name)' = $x"

Write-Host "`$x[0] = $($x[0])"
Write-Host "`$x[1] = $($x[1])"

以上内容的终端输出:

123
x of type 'Object[]' = 456 789
$x[0] = 456
$x[1] = 789
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2038181

复制
相关文章

相似问题

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