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