通常,有没有一种方便的方法来确定PowerShell脚本/函数的哪些行返回值("未捕获")?我希望有一种方法可以在调试时查询要返回的值的当前状态.我可以在每一行后检查它,看看哪些行添加到它.
我有一些脚本在工作,有些行将我的返回值转换为Object [].我通常将这些线管道输出Out-Null来修复这种情况.我只想要返回一个对象(我在函数末尾选择的对象).
有些行是Cmdlet调用,有些是对其他函数的调用,有些是.NET对象的函数调用.
我想你可以使用它Set-PsDebug -trace 1来查看返回它们的行.
例:
考虑下面的脚本:
function f{
1..10
}
function g{
f
return 11
}
g
Run Code Online (Sandbox Code Playgroud)
完成后Set-PsDebug -trace 1,跟踪将如下所示:
DEBUG: 1+ <<<< .\test.ps1
DEBUG: 1+ function f <<<< {
DEBUG: 5+ function g <<<< {
DEBUG: 10+ <<<< g
DEBUG: 6+ <<<< f
DEBUG: 2+ 1.. <<<< 10
1
2
3
4
5
6
7
8
9
10
DEBUG: 7+ return <<<< 11
11
Run Code Online (Sandbox Code Playgroud)
显然,您可以看到输出的来源.但是如果输出被捕获,你就不会得到它.
此外,如果您不关心正在返回的其他对象,并且只想获得您使用该return语句返回的最后一个对象,则可以始终执行类似(func)[-1]或func | select -last 1(如注释中所指出的)以获取最后一个一.
| 归档时间: |
|
| 查看次数: |
864 次 |
| 最近记录: |