Вызов функции через Start-Job и переключение параметров - PullRequest
1 голос
/ 13 мая 2019

У меня есть следующий код:

        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: localhost

1 Ответ

1 голос
/ 14 мая 2019

Вам нужно будет адаптировать это к вашему сценарию, но эта реализация должна делать то, что вам нужно.

[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  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...