【发布时间】:2016-11-29 17:06:51
【问题描述】:
我正在 Powershell 上编写一个搜索工具,我遇到了一个问题,我无法抑制函数的返回,并且它总是打印到控制台。 为了清楚起见,我做了一些较小的测试函数。
Function test1
{
param(
[Parameter(Mandatory=$false,ValueFromPipeline=$True)]
$PrevRes = 0)
write-host "alfa"
return ($PrevRes+1)
}
Function test2
{
param(
[Parameter(Mandatory=$false,ValueFromPipeline=$True)]
$PrevRes = 0)
write-host "beta"
return ($PrevRes+1)
}
Function test3
{
param(
[Parameter(Mandatory=$false,ValueFromPipeline=$True)]
$PrevRes = 0)
write-host "omega"
return ($PrevRes+1)
}
test1 gives:
alfa
1
when test1 | test2:
alfa
beta
2
when test | test2 | test3:
alfa
beta
omega
3
when test | test3 | test2:
alfa
omega
beta
3
问题是我不知道这些函数会以什么顺序被调用,我需要确保如果最后没有管道,返回不会打印到屏幕上,但我仍然需要访问值本身。
我想要这样的输出:
test1 gives:
alfa
when test1 | test2:
alfa
beta
when test | test2 | test3:
alfa
beta
omega
when test | test3 | test2:
alfa
omega
beta
这是为客户提供的工具,因此解决方案如下:
$tst = test1 |test2
不好,因为您知道,客户就是客户,他不会知道如何使用它。
有没有办法使用我在网上错过的 powershell 来做到这一点?
如果不涉及客户的任何操作,任何解决方案都是有用的
提前谢谢你
【问题讨论】:
标签: powershell return output suppress