共用方式為


Export-ModuleMember

指定匯出的模組成員。

語法

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

描述

Export-ModuleMember Cmdlet 會指定要從指令碼模組 (.psm1) 檔案或透過 New-Module Cmdlet 建立的動態模組中匯出的模組成員 (例如 Cmdlet、函數、變數和別名)。此 Cmdlet 只能用於指令碼模組檔案或動態模組。

如果指令碼模組不包含 Export-ModuleMember 命令,則會匯出指令碼模組中的函數,但不會匯出變數和別名。如果指令碼模組包含 Export-ModuleMember 命令,則只會匯出 Export-ModuleMember 命令中指定的成員。

如果指令碼模組包含多個 Export-ModuleMember 命令,則只會匯出 Export-ModuleMember 命令中列出的成員。

您也可以使用 Export-ModuleMember,將指令碼模組從其他模組匯入的成員匯出。

參數

-Alias <string[]>

指定要從指令碼模組檔案匯出的別名。請輸入別名。允許使用萬用字元。

必要?

false

位置?

named

預設值

接受管線輸入?

true (ByPropertyName)

接受萬用字元?

true

-Cmdlet <string[]>

指定要從指令碼模組檔案匯出的 Cmdlet。請輸入 Cmdlet 的名稱。允許使用萬用字元。

您無法在指令碼模組檔案中建立 Cmdlet,但可以將 Cmdlet 從二進位模組匯入至指令碼模組,然後從指令碼模組重新匯出。

必要?

false

位置?

named

預設值

接受管線輸入?

true (ByPropertyName)

接受萬用字元?

true

-Function <string[]>

指定要從指令碼模組檔案匯出的函數。請輸入函數名稱。允許使用萬用字元。您也可以經由管道將函數名稱字串輸出至 Export-ModuleMember。

必要?

false

位置?

1

預設值

接受管線輸入?

true (ByValue, ByPropertyName)

接受萬用字元?

true

-Variable <string[]>

指定要從指令碼模組檔案匯出的變數。請輸入變數名稱 (不含貨幣符號)。允許使用萬用字元。

必要?

false

位置?

named

預設值

接受管線輸入?

true (ByPropertyName)

接受萬用字元?

true

<CommonParameters>

這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.

輸入和輸出

輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。

輸入

System.String

您可以經由管道將函數名稱字串輸出至 Export-ModuleMember。

輸出

這個 Cmdlet 不會產生任何輸出。

附註

若要從匯出成員的清單中排除某個成員,請新增 Export-ModuleMember 命令,其中列出所有其他成員但省略要排除的成員。

範例 1

C:\PS>Export-ModuleMember -function * -alias *

描述
-----------
這個命令會匯出指令碼模組中定義的別名和函數。

若要匯出別名 (預設不會匯出),您同時也必須明確指定函數,否則只會匯出別名。





範例 2

C:\PS>Export-ModuleMember -function Get-Test, New-Test, Start-Test -alias gtt, ntt, stt

描述
-----------
這個命令會匯出指令碼模組中定義的三個別名和三個函數。

您可以使用此命令格式指定模組成員的名稱。





範例 3

C:\PS>Export-ModuleMember

描述
-----------
這個命令會指定不要匯出指令碼模組中定義的成員。

雖然這個命令可防止匯出模組成員,不過無法隱藏這些成員。使用者可以讀取並複製模組成員,或使用呼叫運算子 (&) 來叫用沒有匯出的模組成員。





範例 4

C:\PS>Export-ModuleMember -variable increment

描述
-----------
這個命令只會從指令碼模組匯出 $increment 變數,而不會匯出其他成員。

除了匯出模組中的函數以外,如果您想要匯出變數,Export-ModuleMember 命令就必須包含所有函數的名稱以及變數的名稱。





範例 5

C:\PS># From TestModule.psm1

function new-test 
    { <function code> }
export-modulemember -function new-test

function validate-test 
    { <function code> }

function start-test 
    { <function code> }
set-alias stt start-test
export-modulemember -function *-test -alias stt

描述
-----------
這些命令示範如何解譯指令碼模組 (.psm1) 檔案中的多個 Export-ModuleMember 命令。

這些命令會建立三個函數和一個別名,然後匯出其中兩個函數和該別名。

如果不使用 Export-ModuleMember 命令,則會匯出所有三個函數,但不會匯出別名。如果使用 Export-ModuleMember 命令,則只會匯出 Get-Test 和 Start-Test函數,以及 STT 別名。





範例 6

C:\PS>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

C:\PS>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 
{
  ...
}


function helper
{
  ...
}

export variable interval 0
$interval = 2

描述
-----------
這個範例會包含名為 Export 的函數,以便宣告函數或建立變數,然後寫入該函數或變數的 Export-ModuleMember 命令。這樣做可讓您在單一命令中宣告並匯出函數或變數。

若要使用 Export 函數,請在指令碼模組中加入此函數。若要匯出函數,請在 Function 關鍵字前面輸入 "Export"。

若要匯出變數,請使用下列格式來宣告變數並設定其值:

    export variable <變數名稱> <值>

此範例中的命令示範了正確的格式。在這個範例中,只會匯出 New-Test 函數和 $Interval 變數。





請參閱

概念

Import-Module
Get-Module
Remove-Module
about_Modules