Export-ModuleMember
指定要匯出的模組成員。
Syntax
Export-ModuleMember
[[-Function] <String[]>]
[-Cmdlet <String[]>]
[-Variable <String[]>]
[-Alias <String[]>]
[<CommonParameters>]
Description
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-Test 和 Start-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 的函式,該函式會宣告函式或建立變數,然後撰寫 Export-ModuleMember
函式或變數的命令。
這可讓您宣告和匯出單一命令中的函式或變數。
若要使用 Export 函式,請將它包含在腳本模組中。
若要匯出函式,請在 Function 關鍵詞之前輸入 Export
。
如果要匯出變數,請使用下列格式來宣告變數並設定其值:
Export variable <variable-name> <value>
此範例中的命令會顯示正確的格式。 在此範例中,只會匯出 New-Test 函式和$Interval 變數。
參數
-Alias
指定從指令碼模組檔案匯出的別名。 輸入別名名稱。 允許使用萬用字元。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-Cmdlet
指定從指令碼模組檔案匯出的 Cmdlet。 輸入 Cmdlet 名稱。 允許使用萬用字元。
您無法在指令碼模組檔案中建立 Cmdlet,但可將二進位模組中的 Cmdlet 匯入指令碼模組,然後從指令碼模組重新匯出它們。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-Function
指定從指令碼模組檔案匯出的函式。 輸入函式名稱。 允許使用萬用字元。 您也可以使用管線將函式名稱字串傳送至 Export-ModuleMember。
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-Variable
指定從指令碼模組檔案匯出的變數。 輸入變數名稱,不含貨幣符號。 允許使用萬用字元。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | True |
輸入
您可以使用管線將函式名稱字串傳送至此 Cmdlet。
輸出
None
此 Cmdlet 不會產生任何輸出。
備註
- 若要從導出成員清單中排除成員,請新增 Export-ModuleMember 命令,其中列出所有其他成員,但省略您要排除的成員。