Export-ModuleMember

指定导出的模块成员。

语法

Default (默认值)

Export-ModuleMember
    [[-Function] <String[]>]
    [-Cmdlet <String[]>]
    [-Variable <String[]>]
    [-Alias <String[]>]
    [<CommonParameters>]

说明

Export-ModuleMember cmdlet 指定从脚本模块 (.psm1) 文件或使用 New-Module cmdlet 创建的动态模块导出的模块成员。 模块成员包括 cmdlet、函数、变量和别名。 此 cmdlet 只能在脚本模块文件或动态模块中使用。

如果脚本模块不包含 Export-ModuleMember 命令,则导出脚本模块中的函数和别名,但变量不是。 当脚本模块包含 Export-ModuleMember 命令时,仅导出 Export-ModuleMember 命令中指定的成员。 还可以使用 Export-ModuleMember 来禁止或导出脚本模块从其他模块导入的成员。

Export-ModuleMember 命令是可选的,但它是最佳做法。 即使命令确认默认值,它也演示了模块作者的意图。

示例

示例 1:导出脚本模块中的函数和别名

Export-ModuleMember -Function * -Alias *

此命令导出脚本模块中定义的所有函数和别名。

示例 2:导出特定别名和函数

Export-ModuleMember -Function Get-Test, New-Test, Start-Test -Alias gtt, ntt, stt

此命令导出脚本模块中定义的三个别名和三个函数。

可以使用此命令格式指定模块成员的名称。

示例 3:导出无成员

Export-ModuleMember

此命令指定未导出脚本模块中定义的成员。

此命令可防止导出模块成员,但不会隐藏成员。 用户可以读取和复制模块成员或使用调用运算符(&)调用未导出的模块成员。

示例 4:导出特定变量

Export-ModuleMember -Variable increment

此命令仅从脚本模块导出$increment变量。 不会导出其他成员。

如果要导出变量,除了导出模块中的函数外,Export-ModuleMember 命令还必须包括所有函数的名称和变量的名称。

示例 5:多个导出命令

# From TestModule.psm1
Function New-Test
{
    Write-Output 'I am New-Test function'
}
Export-ModuleMember -Function New-Test

function Validate-Test
{
    Write-Output 'I am Validate-Test function'
}
function Start-Test
{
    Write-Output 'I am Start-Test function'
}
Set-Alias stt Start-Test
Export-ModuleMember -Function Start-Test -Alias stt

这些命令演示如何在脚本模块 (.psm1) 文件中解释多个 Export-ModuleMember 命令。

这些命令创建三个函数和一个别名,然后导出两个函数和别名。

如果没有 Export-ModuleMember 命令,将导出所有三个函数和别名。 使用 Export-ModuleMember 命令,仅导出 New-TestStart-Test 函数和 STT 别名。

示例 6:导出动态模块中的成员

New-Module -Script {function SayHello {"Hello!"}; Set-Alias Hi SayHello; Export-ModuleMember -Alias Hi -Function SayHello}

此命令演示如何在使用 New-Module cmdlet 创建的动态模块中使用 Export-ModuleMember。

在此示例中,Export-ModuleMember 用于在动态模块中导出 Hi 别名和 SayHello 函数。

示例 7:在单个命令中声明和导出函数

# From TestModule.psm1
function Export
{
  param (
    [Parameter(Mandatory=$true)]
    [ValidateSet("function","variable")]
    $Type,
    [Parameter(Mandatory=$true)]
    $Name,
    [Parameter(Mandatory=$true)]
    $Value
    )

    if ($Type -eq "function")
    {
        Set-item "function:script:$Name" $Value
        Export-ModuleMember $Name
    }
    else
    {
    Set-Variable -scope Script $Name $Value
    Export-ModuleMember -variable $Name
    }
}

Export function New-Test {Write-Output 'I am New-Test function'}
function helper {Write-Output 'I am helper function'}

Export variable Interval 0
$Interval = 2

此示例包括一个名为 “导出”的函数,该函数声明函数或创建变量,然后为函数或变量写入 Export-ModuleMember 命令。 这样就可以在单个命令中声明和导出函数或变量。

若要使用 Export 函数,请将其包含在脚本模块中。 若要导出函数,请在 Export 关键字之前键入

若要导出变量,请使用以下格式声明变量并设置其值:

Export variable <variable-name> <value>

示例中的命令显示正确的格式。 在此示例中,仅导出 New-Test 函数和$Interval变量。

参数

-Alias

指定从脚本模块文件导出的别名。 输入别名。 允许使用通配符。

参数属性

类型:

String[]

默认值:None
支持通配符:True
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-Cmdlet

指定从脚本模块文件导出的 cmdlet。 输入 cmdlet 名称。 允许使用通配符。

不能在脚本模块文件中创建 cmdlet,但可以将 cmdlet 从二进制模块导入脚本模块,并从脚本模块重新导出它们。

参数属性

类型:

String[]

默认值:None
支持通配符:True
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-Function

指定从脚本模块文件导出的函数。 输入函数名称。 允许使用通配符。 还可以通过管道将函数名称字符串传递给 Export-ModuleMember

参数属性

类型:

String[]

默认值:None
支持通配符:True
不显示:False

参数集

(All)
Position:0
必需:False
来自管道的值:True
来自管道的值(按属性名称):True
来自剩余参数的值:False

-Variable

指定从脚本模块文件导出的变量。 输入变量名称,而不输入美元符号。 允许使用通配符。

参数属性

类型:

String[]

默认值:None
支持通配符:True
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

CommonParameters

此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters

输入

String

可以通过管道将函数名称字符串传递给此 cmdlet。

输出

None

此 cmdlet 将不生成任何输出。

备注

  • 若要从导出成员列表中排除成员,请添加一个 Export-ModuleMember 命令,该命令列出所有其他成员,但省略要排除的成员。