小编Mal*_*3nt的帖子

在PowerShell中从另一个函数调用一个函数

第一次使用PowerShell 5时,我无法调用一个将消息从另一个函数写入文件的函数。以下是我正在做的简化版本。

workflow test {
    function logMessage {
        param([string] $Msg)

        Write-Output $Msg
    }

    function RemoveMachineFromCollection{
        param([string]$Collection, [string]$Machine)

        # If there's an error
        LogMessage "Error Removing Machine"

        # If all is good
        LogMessage "successfully remove machine"
    }


    $Collections = DatabaseQuery1

    foreach -parallel($coll in $Collections) {
        logMessage "operating on $coll collection"

        $Machines = DatabaseQuery2

        foreach($Mach in $Machines) {
            logMessage "Removing $Mach from $coll"

            RemoveMachineFromCollection -Collection $coll -Machine $Mach
        }
    }
}

test
Run Code Online (Sandbox Code Playgroud)

这是它生成的错误:

术语'logMessage'不被识别为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者是否包含路径,请验证路径是否正确,然后重试。
    + CategoryInfo:ObjectNotFound:(logMessage:String)[],CommandNotFoundException
    + FullyQualifiedErrorId:CommandNotFoundException
    + PSComputerName:[本地主机]

我尝试过在文件中四处移动logMessage函数,甚至尝试使用全局范围。

用任何其他语言,我都可以从任何其他函数中调用logMessage。这就是功能的目的。 …

powershell workflow function powershell-workflow powershell-5.0

5
推荐指数
1
解决办法
2万
查看次数