我正在从一个批处理文件中运行一个PowerShell脚本。该脚本获取一个网页,并检查该网页的内容是否为字符串"OK“。
PowerShell脚本将错误级别返回给批处理脚本。
批处理脚本由FTP自动化程序ScriptFTP执行。如果发生错误,我可以让ScriptFTP通过电子邮件将完整的控制台输出发送给管理员。
在PowerShell脚本中,如果返回值不是"OK",我希望输出来自web站点的返回值,这样错误消息就会包含在控制台输出中,从而包含在状态邮件中。
我是PowerShell的新手,不确定使用哪个输出函数来实现这一点。我能看到三个:
什么是正确的东西用来写到视窗的stdout
等效物
发布于 2010-01-12 00:01:47
简单地输出一些东西就是PowerShell是一件很美的事情--也是它最大的优点之一。例如,常见的Hello,World!应用程序简化为一行:
"Hello, World!"
它创建一个string对象,分配前述的值,作为命令管道上的最后一项,它调用.toString()
方法并将结果输出到STDOUT
(默认情况下)。一件美丽的事情。
其他Write-*
命令特定于将文本输出到与其相关联的流,并有其各自的位置。
发布于 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“发回给开发人员。
发布于 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
https://stackoverflow.com/questions/2038181
复制相似问题