当前位置:  开发笔记 > 编程语言 > 正文

PowerShell中的Echo等效脚本测试

如何解决《PowerShell中的Echo等效脚本测试》经验,为你挑选了7个好方法。

我想通过设置标志并在整个脚本中查看数据来输出PowerShell脚本中的变量和值.

我该怎么做?

例如,PowerShell与以下PHP代码等效的是什么?

echo "filesizecounter: " . $filesizecounter 

Richard.. 257

有几种方法:

Write-Host:直接写入控制台,不包含在function/cmdlet输出中.允许设置前景色和背景色.

Write-Debug:直接写入控制台,如果$DebugPreference设置为继续或停止.

Write-Verbose:直接写入控制台,如果$VerbosePreference设置为继续或停止.

后者用于额外的可选信息,Write-Debug用于调试(因此在这种情况下似乎适合).

附加:在PSH2中(至少)使用cmdlet绑定的脚本将自动获取-Verbose-Debug切换参数,本地启用Write-VerboseWrite-Debug(即覆盖首选项变量)作为编译的cmdlet和提供程序.



1> Richard..:

有几种方法:

Write-Host:直接写入控制台,不包含在function/cmdlet输出中.允许设置前景色和背景色.

Write-Debug:直接写入控制台,如果$DebugPreference设置为继续或停止.

Write-Verbose:直接写入控制台,如果$VerbosePreference设置为继续或停止.

后者用于额外的可选信息,Write-Debug用于调试(因此在这种情况下似乎适合).

附加:在PSH2中(至少)使用cmdlet绑定的脚本将自动获取-Verbose-Debug切换参数,本地启用Write-VerboseWrite-Debug(即覆盖首选项变量)作为编译的cmdlet和提供程序.


Write-Debug和Write-Verbose的优点在于您可以将调试语句保留在代码中,只需在需要时使用适当的首选项变量打开输出.节省时间,对于您的其他功能用户来说是一个很好的功能.
您还希望熟悉Out-String,因为对于任何非平凡的对象,您需要使用它将对象转换为可显示的字符串,然后再使用这三个Write-*cmdlet中的任何一个.

2> Justin R...:

Powershell有一个别名映射echo Write-Output,所以:

echo "filesizecounter : $filesizecounter"


`echo`是`Write-Output`的别名,按照微软的[TechNet](https://technet.microsoft.com/en-us/library/hh849921.aspx)讨论[here](http:// stackoverflow的.com /一个/八十五万七千二百零九分之一千七百六十二万三千九百零二)
如果您只想将"调试"输出回显到控制台以跟踪脚本的执行,为什么不想绕过管道?Write-Output有一个奇怪的副作用,其中最后一次调用Write-Output的内容将保留在堆栈中,覆盖您尝试从函数显式返回的任何变量.像这样的副作用对于语言表现来说是一种非常棘手的方式.
谢谢Glenn,自我发布此字以来的6年中,别名似乎已重新映射。很好,真的不应该使用Write-Host,因为它绕过了管道。我已更新我的回复以表明这一点。谢谢!

3> John T..:

PowerShell插值,不是吗?

在PHP中

echo "filesizecounter: " . $filesizecounter 

也可以写成:

echo "filesizecounter: $filesizecounter" 

在PowerShell中,这样的东西应该适合您的需求:

Write-Host "filesizecounter: $filesizecounter"


PHP与这个问题无关

4> aphoria..:
Write-Host "filesizecounter : " $filesizecounter 



5> Goyuix..:

到目前为止,在powershell中回显的最简单方法是创建字符串对象并让管道输出它:

$filesizecounter = 8096
"filesizecounter : $filesizecounter"

当然,在不使用Write-*方法时,您确实放弃了一些灵活性.



6> 小智..:

echo是Write-Output的别名,尽管它看起来与Write-Host相同.

它不是PowerShell中echo和Write-Host有什么区别?.

echo是Write-Output的别名,它写入Success输出流.这允许通过管道处理输出或重定向到文件.Write-Host直接写入控制台,因此无法进一步重定向/处理输出.



7> 小智..:

写主机工作正常.

$Filesize = (Get-Item $filepath).length;
Write-Host "FileSize= $filesize";

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有