我有以下代码:
Start-Job -ScriptBlock $Function:DbRefresh -argumentlist $DestSqlInstance , `
$RefreshDatabase , `
$PfaEndpoint , `
$PfaCredentials , `
$RefreshSource , `
$ForceDestDbOffline, `
$NoPsRemoting , `
$PromptForSnapshot , `
$ApplyDataMasks | Out-Null 最后四个参数是传递给出现此语句的函数的开关,调用DbRefresh时使用的参数的位置和类型都是正确的。尽管如此,我的作业还是中止了,原因是:
A positional parameter cannot be found that accepts argument 'False'.
+ CategoryInfo : InvalidArgument: (:) [], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound显然,通过带有开关的Start-Job调用函数有一些细微差别,而我错过了这些开关。+ PSComputerName :本地主机
发布于 2019-05-14 05:55:27
您需要根据您的场景对此进行调整,但此实现应该能满足您的需要。
[scriptblock]$sb = {
function isOn {
param (
[switch]$on
)
if ($on) {write-output "on"} else { write-warning "off" }
}
isOn -On:$Args[0]
}
@($true,$false) | %{ start-job -ScriptBlock $sb -ArgumentList @($_) }
Get-Job |Receive-Job
on
WARNING: off https://stackoverflow.com/questions/56118462
复制相似问题