Powershell: вызов одной функции из другой, а вторая функция запускает задний план - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь сделать что-то похожее на это. Первая функция Вторая функция вызывает первую функцию и запускает Start-Job

пример:

Function CreateDeleteDirs {
Param(
  [Parameter(
  Mandatory = $True,
  HelpMessage = 'Remote Path to create dirs on. Provide full path.')
  ]
  [ValidateNotNullOrEmpty()]
  [string]$RootPath
  )
  ***do some stuffs***
}
Function CreateDeleteDirBack {
Param(
  [Parameter(
  Mandatory = $True,
  HelpMessage = 'Remote Path to create dirs on. Provide full path.')
  ]
  [ValidateNotNullOrEmpty()]
  [string]$RootPath
  )
  $scriptBlock = {
 param ($RootPath)
 CreateDeleteDirs -RootPath $RootPath 

} Start-Job -ScriptBlock $ scriptBlock -ArgumentList @ ($ RootPath) }
}

Так что всегда происходит сбой при вызове CreateDeleteDirs из второй функции .. как я могу это сделать

Точный фрагмент ошибки

PS C:\Program Files\WindowsPowerShell\Modules> CreateDeleteDirsBackground -RootPath Y: 

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command                  
--     ----            -------------   -----         -----------     --------             -------                  
21     Job21           BackgroundJob   Running       True            localhost            ...                      



PS C:\Program Files\WindowsPowerShell\Modules> Receive-Job Job21
The term 'CreateDeleteDirs' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the 
spelling of the name, or if a path was included, verify that the path is correct and try again.
    + CategoryInfo          : ObjectNotFound: (CreateDeleteDirs:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
    + PSComputerName        : localhost


PS C:\Program Files\WindowsPowerShell\Modules> 

1 Ответ

0 голосов
/ 11 марта 2019

Я изменил ваш код для вывода корневого пути, чтобы мы могли видеть его работающим, и дождался завершения задания.

$script_block = {
  function CreateDeleteDirs {
    Param(
      [Parameter(Mandatory = $True, HelpMessage = 'Remote Path to create dirs on. Provide full path.')]
      [ValidateNotNullOrEmpty()]
      [string]$RootPath
    )

    write-host "Rootpath = '$RootPath'"
  }

  function CreateDeleteDirBack  {
    Param(
      [Parameter(Mandatory = $True, HelpMessage = 'Remote Path to create dirs on. Provide full path.')]
      [ValidateNotNullOrEmpty()]
      [string]$RootPath
    )

    CreateDeleteDirs -RootPath $RootPath 
  } 
}

Start-Job -InitializationScript $script_block -ScriptBlock {CreateDeleteDirBack  'foo'} | Wait-Job | Receive-Job
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...