我正在学习PowerShell,并使用Write Host检查新PowerShell脚本文件中的变量分配。然后我读到一篇文章,说这是个坏主意。
所以,在我的。ps1文件I替换了如下语句:
Write-Host "Start"
Write-Host "End"
... 使用此选项:
Write-Debug "Start"
Write-Debug "End"
但当我在Windows PowerShell ISE中运行保存的脚本时,没有向控制台写入任何输出。我在调用脚本的语句中附加了debug,如下所示:
PS E:\trialrun> .\MyScript.ps1 -debug
但同样,输出没有写入控制台。显然我使用了错误的写入调试。如何让调试输出写入控制台?
如果您想要支持常见参数(包括-Debug
),您需要在脚本中使用CmdletBinda
属性:
[CmdletBinding()]
param()
Write-Debug Start
Write-Debug End
我建议看看about_Functions_CmdletBindingAttribute
帮助文件
tl; dr:
>
运行$DebugPreference='继续'开始查看来自写入调试调用的输出。
完成后,使用$DebugPreference='SilentlyContinue'
要仅打开给定cmdlet或高级函数的调试输出,请使用-Debug
通用参数。
是否打印写入调试语句的输出由两种机制控制:
>
范围广泛:根据$DebugPreference
首选项变量的值-请参阅获取有关_preference_变量的帮助
。
使用-Debug
通用参数调用cmdlet或高级脚本/函数时(它覆盖$DebugPre的
值)-请参阅Get-helpabout_CommonParameters
。
$DebugPrecript
默认为Silently继续
,这解释了为什么默认情况下您看不到Sty-Debug
语句的任何输出。
使用公共参数Debug时,可以有效地仅为调用的命令设置DebugPreference,并且:
>
在PowerShell[Core]v6中,该值现在(更明智地)设置为继续
。
param()
块的[CmdletBinding()]属性声明
由于在Windows PowerShell中,这种随时随地提示-
写-调试
-调用行为可能会造成破坏,$DebugPrecript='继续'
可能是更好的方法。如前所述,在PowerShell[Core]v6中,这不再是一个问题。
注意:如果从高级函数或脚本内部,您想区分
$DebugPreason
已被调用者设置为首选变量与通用参数-Debug
已被传递(已翻译为函数/script t-local$DebugPreave
变量),请使用$PSBoundParameters。ContainsKey('Debug')
;$true
表示使用了-Debug
。
参考官方文件:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/write-debug
默认情况下,调试消息不会显示在控制台中,但您可以使用debug参数或$DebugPreference变量来显示它们。
问题内容: 我已尝试使用此代码建议(http://www.daniweb.com/forums/thread23883.html#)将控制台输出写入txt文件,但未成功。怎么了? 问题答案: 你需要执行以下操作: 第二句话是关键。它将假定的“最终” 属性的值更改为提供的值。 可以使用类似的方法(和)来更改标准输入和错误流。有关详细信息,请参考。 上面的一个更通用的版本是这样的: 如果为is ,则流
问题内容: 我是python的新手,正在编写一些脚本来自动从FTP服务器等下载文件。我想显示下载进度,但是我希望它保持不变,例如: 输出: 正在下载文件FooFile.txt [47%] 我正在尝试避免这样的事情: 我应该怎么做呢? 复制 : 如何在命令行应用程序的当前行上打印? 问题答案: 您还可以使用回车符:
问题内容: 我只有一种方法。如何检查System.out.println()并将Scanner替换为使用JUnit自动输入值? PS,请提供一些解决方案… 问题答案: 理想情况下,提取尴尬的依赖关系,以便您可以在没有依赖关系的情况下进行测试。更改为简单: (考虑使用a 代替for 。) 然后,您实际上不需要进行单元测试-但您可以使用基于的进行测试,并基于的输出进行测试,从而提供所需的任何输入并检查
本文向大家介绍PowerShell 写输出,包括了PowerShell 写输出的使用技巧和注意事项,需要的朋友参考一下 示例 Write-Output产生输出。该输出可以转到管道之后的下一个命令或控制台,以便简单显示。 Cmdlet将对象沿着主管道(也称为“输出流”或“成功管道”)发送。要将错误对象发送到错误管道,请使用Write-Error。 Write-Output cmdlet将指定对象沿管
我一直在尝试编码来查找给定数组元素的LCM。我的代码如下 我的问题是,当我输入时,输出控制台会冻结。我尝试了另一种没有while循环的方法。也就是说,消除了while循环,并在最后添加了一个if循环。 但现在编译器抛出一个错误,指出并非所有代码路径都返回一个值。有人能帮我解决代码中的问题吗?我是一名编程初学者。提前谢谢!!
问题内容: 我正在使用Pygame / SDL的操纵杆模块从游戏手柄获取输入。每次调用它的方法时,它都会打印到控制台。这是有问题的,因为我使用控制台来帮助我进行调试,现在每秒被淹没60次。有什么方法可以禁用此功能吗?通过Pygame / SDL中的选项还是在函数调用时取消控制台输出?我在Pygame文档中没有提到这一点。 编辑: 原来是由于在编译SDL库时打开了调试功能。 问题答案: 这是来自jo