我有以下代码:
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:本地主机
答案 0 :(得分:1)
您需要根据自己的情况进行调整,但是此实现应该可以满足您的需求。
[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