1

私はSMA runbooksでコードを再利用しようとしていますが、関数内に入れようとするものはすべて期待どおりに動作していないようです。例えば 、私はこれを行う場合は、資格のユーザー名を動作し、返します。Powershellワークフロー関数の問題

workflow RB_Test 
{ 
    $credent = Get-AutomationPSCredential -Name "CRED_TESTE" 
    $var = $credent.Username 
    "result = ${var}"  
} 

出力:

enter image description here

しかし、私はこれに変わる場合、それはもう動作しません(リターンヌル):

workflow RB_Test 
{ 
    function FN_Test 
    { 
     $credent = Get-AutomationPSCredential -Name "CRED_TESTE" 
     $var = $credent.Username 
     "result = ${var}"   
    } 
    FN_Test 
} 

出力: enter image description here

私はさまざまなことを試みましたが、成功しませんでした。デバッグ/冗長画面では何も表示されません。それはまた、動作しません:

Inlinescript { 
. FN_Test 
} 

私の目標は、別のモジュールにいくつかの機能を配置すること、その後、再利用のための私のランブックにインポートするが、これは実際に動作していないようだでしょう。 これは、Service Management Automation(SMA)で作成されたrunbook(powershellワークフロー)です。

私は、純粋なPowerShellのに比べPowerShellのワークフローを持ついくつかの制限があることを読んだが、私はそれらの1当たっていた場合、私はわからない: https://blogs.technet.microsoft.com/heyscriptingguy/2013/01/02/powershell-workflows-restrictions/

感謝を

ここ

答えて

0

は私が持っていたものです機能を動作させるには:

workflow FunctionTest { 
    function log { 
     param(
      [string]$Message 
     ) 

     Write-Output $Message 
     Write-Output "Filename: $Filename" 
     Write-Output "using:Filename: $using:Filename" 
     Write-Output "workflow:Filename: $workflow:Filename" 
     Write-Output "----" 
     ## Under what conditions is 'global' used? Can't be used in a workflow...Hey Scripting Guy! 
    } 

    workflow DoSomething { 
     param(
      [string]$Filename 
     ) 

     log "Starting DoSomething" 
    } 

    $Filename = "LogFile_2017.csv" 

    log "Starting workflow" 

    ## Variables need to be passed into workflow from parent-workflow 
    DoSomething -Filename $Filename 

    log "End workflow" 
} 

FunctionTest 

機能を使用する前に定義する必要があることがわかりました。その微妙な部分は、変数を子ワークフローに渡す必要があることを発見していました。

変数のスコープは慣れています。

関連する問題