0

Azure Automation で実行される一連のワークフロー Runbook でパラメーター スプラッティングが機能しない理由を突き止めようとして頭を悩ませています。

ネストされた方法で呼び出される 3 つのランブック (スーパー、サブ、子) があります。それらはすべて(一般に)同じパラメーターを共有します。私の実際のシナリオでは、複数のサブ & 子 Runbook があり、スプラッティングを使用して、すべてのパラメーターを一覧表示することなく、ハッシュテーブルを一度定義して必要に応じて渡すことができるようにしたいと考えています。

-PSParameterCollectionまた、パラメータを使用してみました。ただし、Azure Automation では、子でパラメーターが見つからないというエラーがスローされるため、これは最上位の Runbook (既に機能している) でのみ使用できるようです。ここの注記セクションには、ネストされた 3 レベルの深さのワークフローは、ワークフロー共通パラメーターを含む共通パラメーターをサポートしていないことが示されていますが、これらのランブックのコンパイル方法によっては、問題になる可能性があるようです. Runbook の再利用性を制限することなく、それを回避します。呼び出されたワークフローが、呼び出し元のワークフロー内でネストされたワークフローとしてコンパイルされるとは思いません。

私が得るエラーは次のとおりです。

$newnumber = sub @splatter
                         ~~~~~~~~~~
'0' という名前のパラメーターが見つかりませんでした。サポートされているパラメータは次のとおりです: Debug、ErrorAction、....

奇妙なことに、これらのテスト ランブックで見られるものとは異なり、「実際の」ワークフローでは、最上位のランブックではこのエラーが発生しません。「サブ」内から「子」ランブックを呼び出す場合のみです。 .

workflow child
{
    Param ([int]$val)
    Write-Verbose "child: val ($val)"

    $NewNumber = $val*2 
    $NewNumber 
}

workflow childtwo
{
    Param ([int]$val, [int]$valtwo)
    Write-Verbose "childtwo: val ($val) valtwo ($valtwo)"

    $NewNumber = $val * $valtwo 
    $NewNumber 
}

workflow sub 
{ 
    Param ([int]$val)   
    Write-Verbose "sub: val ($val)"

    $splatter = @{ val = $val }
    # works
    $NewNumber = child -val $splatter.val
    # fail
    $NewNumber = child @splatter

    # works
    $NewNumber = childtwo -val $splatter.val -valtwo 2
    # fail
    $NewNumber = childtwo ($splatter + @{ valtwo = 2 })
    $mergeSplatter = ($splatter + @{ valtwo = 2 })
    $NewNumber = childtwo @mergeSplatter
    $twoSplatter = @{ val = $val; valtwo = 2 }
    $NewNumber = childtwo @twoSplatter 

    $NewNumber 
}

workflow super
{
    Param([int]$val)
    Write-Verbose "super: id is $val"

    $splatter = @{ val = $val }

    $newnumber = sub -val $val
    $newnumber = sub @splatter # @ or $ doesn't matter - fails the same

    Write-Verbose "super: newnumber is $newnumber"

    $newnumber
}

super 2
4

1 に答える 1