我正在Powershell上写一个搜索工具,我遇到了一个问题,我无法抑制函数的返回,并且它始终打印到控制台。 为了说清楚我做了一些较小的测试功能。Powershell:Supress输出到控制台,如果它是流水线
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来实现它,我错过了在线?
,如果它不涉及从客户
感谢您的任何行动提前
非常感谢您的回复,但我很抱歉,也许我的问题不是自我解释。我必须使用写主机,因为它向用户提供数据。我真正要问的是,有没有一种方法可以确定函数本身的返回值是否是流水线? 我需要为计算增加$ PrevRes值,但是当它不再流水线时,我不想将其输出到屏幕。所以在我和我只需要阿尔法贝塔和欧米茄没有数字在最后。 – SokIsKedu
@SokIsKedu我不确定你的意思是“如果返回值是流水线的” - 在PowerShell中,函数发出0个或更多对象,最后一个在return语句之后。如果管道中的下一个东西是另一个功能,则对象将被发送到它,否则返回给调用者 –
如果您的客户“不知道如何使用它”,那他为什么要求您提供它? –