Powershell工作流功能问题

Powershell工作流功能问题,powershell,workflow,powershell-workflow,service-management,runbook,Powershell,Workflow,Powershell Workflow,Service Management,Runbook,我试图重用SMA运行手册上的代码,但我试图放入函数中的所有内容似乎都没有按预期工作。 例如,如果我这样做,它将工作并返回凭据的用户名: workflow RB_Test { $credent = Get-AutomationPSCredential -Name "CRED_TESTE" $var = $credent.Username "result = ${var}" } 输出: 但是如果我变成这个,它就不再工作了(返回null): 输出: 我

我试图重用SMA运行手册上的代码,但我试图放入函数中的所有内容似乎都没有按预期工作。 例如,如果我这样做,它将工作并返回凭据的用户名:

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

但是如果我变成这个,它就不再工作了(返回null):

输出:

我尝试过不同的事情,但没有成功。调试/详细屏幕不会返回任何不同的内容。这也不起作用:

Inlinescript { 
 . FN_Test
}   
我的目标是将几个函数放在一个单独的模块中,然后将其导入到我的Runbook中以实现可重用性,但这似乎真的不起作用。 这是在服务管理自动化(SMA)中创建的runbook(powershell工作流)

我已经了解到,与纯Powershell工作流相比,Powershell工作流有一些限制,但我不确定我是否遇到了其中一个限制:


谢谢

以下是让函数正常工作所必须做的:

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
我发现您需要在使用函数之前定义它们。棘手的部分是发现必须将变量传递到子工作流中


变量的范围需要一些时间来适应。

以下是我为使函数正常工作所做的工作:

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
我发现您需要在使用函数之前定义它们。棘手的部分是发现必须将变量传递到子工作流中

变量的范围需要一些时间来适应