Powershell从一个函数调用另一个函数

Powershell从一个函数调用另一个函数,powershell,Powershell,我正在学习Powershell,遇到了一个似乎无法从一个函数调用另一个函数的情况 我的测试脚本包含以下代码: Import-Module PSStdLib -Verbose -Force plSetLevel 12 function plFileAppend { <# .SYNOPSIS .DESCRIPTION .PARAMETER FileName FileName .PARAMETE

我正在学习Powershell,遇到了一个似乎无法从一个函数调用另一个函数的情况

我的测试脚本包含以下代码:

Import-Module PSStdLib -Verbose -Force
plSetLevel 12  
function plFileAppend { 
    <#
        .SYNOPSIS

        .DESCRIPTION

        .PARAMETER FileName
        FileName

        .PARAMETER Output
        Output

        .PARAMETER Variables
        Variables


        .EXAMPLE

    #>

    [CmdletBinding()]

    Param (

    [Parameter(Mandatory=$true, ParameterSetName="Default", Position=1)]
    [Parameter(Mandatory=$true, ParameterSetName="Variable", Position=1)]
    [ValidateNotNullOrEmpty()] 
    [String]$FileName, 

    [Parameter(Mandatory=$true, ParameterSetName="Default", Position=2)]
    [Parameter(Mandatory=$true, ParameterSetName="Variable", Position=2)]
    [String]$Output, 

    [Parameter(Mandatory=$true, ParameterSetName="Variable", Position=3)]
    [String[]]$Variables 

    )

    # Scan the output for variable markers.
    $lVarsInOutput = ($Output.ToCharArray() | Where-Object {$_ -eq '{'} | Measure-Object).Count

    # No variable substitutions.
    if ($lVarsInOutput -eq 0 ) {
        $Output | Out-File $FileName -Append
    } else {
    # Variables passsed to substitute into output.
        $lVaiablesOut = $Variables[ 0..($lVarsInOutput-1) ]
        $Output -f  $lVaiablesOut | Out-File $FileName -Append
    }
}
导入的模块具有以下代码:

Import-Module PSStdLib -Verbose -Force
plSetLevel 12  
function plFileAppend { 
    <#
        .SYNOPSIS

        .DESCRIPTION

        .PARAMETER FileName
        FileName

        .PARAMETER Output
        Output

        .PARAMETER Variables
        Variables


        .EXAMPLE

    #>

    [CmdletBinding()]

    Param (

    [Parameter(Mandatory=$true, ParameterSetName="Default", Position=1)]
    [Parameter(Mandatory=$true, ParameterSetName="Variable", Position=1)]
    [ValidateNotNullOrEmpty()] 
    [String]$FileName, 

    [Parameter(Mandatory=$true, ParameterSetName="Default", Position=2)]
    [Parameter(Mandatory=$true, ParameterSetName="Variable", Position=2)]
    [String]$Output, 

    [Parameter(Mandatory=$true, ParameterSetName="Variable", Position=3)]
    [String[]]$Variables 

    )

    # Scan the output for variable markers.
    $lVarsInOutput = ($Output.ToCharArray() | Where-Object {$_ -eq '{'} | Measure-Object).Count

    # No variable substitutions.
    if ($lVarsInOutput -eq 0 ) {
        $Output | Out-File $FileName -Append
    } else {
    # Variables passsed to substitute into output.
        $lVaiablesOut = $Variables[ 0..($lVarsInOutput-1) ]
        $Output -f  $lVaiablesOut | Out-File $FileName -Append
    }
}
我已经导入了带有Verbose和Force的模块,并且输出似乎是按照正确的顺序加载的

VERBOSE: Loading module from path 'S:\PS\Home\Library\PSStdLib\PSStdLib.psm1'.
VERBOSE: Importing function 'plDebugPrint'.
VERBOSE: Importing function 'plFileAppend'.
VERBOSE: Importing function 'plGetKeyValue'.
VERBOSE: Importing function 'plGetKeyValues'.
VERBOSE: Importing function 'plIfExists'.
VERBOSE: Importing function 'plOSInfo'.
VERBOSE: Importing function 'plSetLevel'.
我在Google找到的所有东西似乎都解决了被调用函数的定义必须在调用函数之前的情况。这里的情况似乎并非如此。我错过了什么?Powershell不能从一个函数调用另一个函数吗?
我怀疑这是一个范围问题?是否有一种方法可以解决此问题,并且仍然在函数中保留代码?

没有问题-您正在调用一个尚未定义的函数

在模块中,您通过以下名称定义函数:

plFileAppend 
但是你调用了一个函数名为

plFileAppand

也就是说,最后的e已经被一只a

狗所取代。我知道这很简单,但很不好意思。即使是我们中最好的人,今天也喝不到足够的咖啡;-)