我有一个脚本,我在不同情况下远程和本地运行。在远程情况下,我想返回一些额外的工作信息。但是,该脚本还需要使用Restart,LogOff等完成。
但是,如果我Return $Results
,则不执行后面的代码。如果我Write-Host
返回信息,我将其视为作业的附加数据,并且后面的脚本完成代码仍然可以执行。
我可以做到这一点,但它会导致两个问题。
Write-Host
,我需要使用$value1|$value2
的kludge,然后将字符串拆分为|得到两位数据。Write-Host
对我的控制台有些污染,所以我需要一些额外的代码来管理它。有没有办法返回中间信息并继续执行?或者我除了走Write-Host
路线别无选择?或者是否有另一种方法比Write-Host
hack更好?
答案 0 :(得分:0)
不要使用Return。只需输出$ Results,然后让脚本的其余部分继续。
答案 1 :(得分:0)
您似乎认为必须使用return
关键字来创建函数(?)才能返回一些内容。不过,PowerShell的工作方式略有不同。 PowerShell函数返回成功输出流上的整个非捕获输出。 return
关键字仅用于在该特定点返回函数。
之间没有任何区别
function Foo {
return 'something' # return with value
}
和
function Foo {
'something'
return # echo first, then return
}
和
function Foo {
'something' # just echo, return implicitly
}
这样你可以让函数生成输出,然后在实际返回之前做更多的事情:
function Foo {
'foo'
'bar'
Get-ChildItem . -Recurse | Out-Null # output not returned (suppressed)
'baz' > 'C:\some.txt' # output not returned (redirected to file)
}
但是,只有在函数调用返回后,调用者才会收到返回的值(在本例中为'foo', 'bar'
)。如果您需要立即反馈,您还需要其他方法。