2016-03-27 29 views
0

内部に多数の関数を持つPowershellワークフローを作成しようとしています。ワークフロー内の関数から関数を呼び出す方法

私のコード、およびエラー...

workflow New-AutomationVM 
{ 
    function Pre-DeploymentChecks 
    { Write-Output $true } 

    function Deploy 
    { $checkResult = Pre-DeploymentChecks } 

    Deploy 
} 
New-AutomationVM 

用語「事前DeploymentChecks」は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません。

私の意図は、他のすべての機能をカプセル化した展開機能を作成することでした。しかし、ワークフロー内の関数内から関数を呼び出すことはできないようです。つまり、ワークフローからPre-DeploymentCheckを呼び出すことはできますが、関数は呼び出すことはできません。

明らかに、私はそのロジックを関数の外に置くことができましたが、このアプローチはやや控えめなようでした。

私は何か愚かなことをしていますか? Powershellのワークフローでは不可能なのでしょうか?代わりに

答えて

1

使用ネストされたワークフロー:

workflow New-AutomationVM 
{ 
    workflow Pre-DeploymentChecks 
    { Write-Output $true } 

    workflow Deploy 
    { $checkResult = Pre-DeploymentChecks } 

    Deploy 
} 
New-AutomationVM 

また、これはあなたがそのようなsequenceparallelとして、各ネストされたワークフロー内のワークフロー構成を使用することができます:

workflow New-AutomationVM 
{ 
    workflow Pre-DeploymentChecks 
    { 
     function Check-IP 
     { return $true } 

     function Check-Name 
     { return $true } 

     function Check-Role 
     { return $false } 

     $CheckResults = parallel { 
      sequence { 
       Check-IP 
       Check-Name 
      } 
      Check-Role 
     } 

     ($CheckResults |Where-Object {-not $_}) -le 1 
    } 

    workflow Deploy 
    { 
     Pre-DeploymentChecks 
    } 

    Deploy 
} 
New-AutomationVM 
関連する問題