Windows 将函数的返回值指定给变量时不显示输出

Windows 将函数的返回值指定给变量时不显示输出,windows,function,powershell,output,Windows,Function,Powershell,Output,如果我有一个非常简单的脚本,其中包含一个只执行以下操作的函数: function saySomething() { Write-Output "Saying someting..." } $something = saySomething saySomething | Tee-Object -Variable something 如果我从控制台调用此函数,将显示输出。但是,如果我执行以下操作: function saySomething() { Write-Output "Sa

如果我有一个非常简单的脚本,其中包含一个只执行以下操作的函数:

function saySomething() {
   Write-Output "Saying someting..."
}
$something = saySomething
saySomething | Tee-Object -Variable something
如果我从控制台调用此函数,将显示输出。但是,如果我执行以下操作:

function saySomething() {
   Write-Output "Saying someting..."
}
$something = saySomething
saySomething | Tee-Object -Variable something
然后不显示输出。显然,我的工作示例要比这复杂得多,但简而言之,如果函数用于设置变量,我如何在函数中显示输出

尝试以下操作:

function saySomething() {
   Write-Output "Saying someting..."
}
$something = saySomething
saySomething | Tee-Object -Variable something

这应该完全符合您的要求。

设置变量后,只需写出变量即可。有没有理由不这样做?@MusaabAl Okaidi变量实际上是一个复杂的对象。这是一个运行缓慢的函数,我想在构建对象时显示一个特定的状态。你试过Tee对象吗?这将允许您同时输出到控制台和文件,但如果您不输出简单文本,那么我想这对您不起作用,因为您需要将对象读回变量,对吗?刚刚意识到Tee对象可以输出到变量,请参见下面我的答案。@inquisitor-如果您想显示状态,请查看Write Progress cmdlet。如果您的函数同时返回它正在构建的东西和状态,那么您为其分配结果的变量将具有可能没有用处的状态消息。