about_Modules

主題
    about_Modules

簡短描述
    說明如何安裝、匯入和使用 Windows PowerShell 模組。

完整描述
    模組是一種封裝,可以包含 Windows PowerShell 命令,例如 Cmdlet、提供者、函
    數、變數和別名。

    撰寫命令的人員可以使用模組來組織命令,並與其他人分享。收到模組的人員可以將
    模組中的命令新增至 Windows PowerShell 工作階段,然後就像使用內建命令一樣地
    使用這些命令。

    本主題說明如何使用 Windows PowerShell 模組。如需如何撰寫 Windows PowerShell
    模組的詳細資訊,請參閱 MSDN (Microsoft Developer Network) 文件庫中的
    <撰寫 Windows PowerShell 模組>(英文),
    網址為:http://go.microsoft.com/fwlink/?LinkId=144916。
    

 如何使用模組
    若要使用模組,請執行下列工作:

        1. 安裝模組 (此工作通常已完成)。
        2. 將模組匯入至 Windows PowerShell 工作階段。
        3. 尋找模組新增的命令。
        4. 使用模組新增的命令。
     
    本主題說明如何執行這些工作,其中還包括其他與管理模組相關的有用資訊。


 如何安裝模組
    如果您收到的模組是資料夾內含檔案,則必須先將模組安裝在電腦上,然後才能匯入
    至 Windows PowerShell。

    大部分的模組都會自行安裝。Windows PowerShell 隨附幾個已預先安裝的模組。在
    Windows Server 2008 R2 中,伺服器管理員中的新增功能精靈會自動安裝您選取的
    功能模組。許多其他模組則隨附於能自動安裝模組的安裝程式中。

    安裝模組資料夾:

        1. 為目前使用者建立 Modules 目錄 (如果沒有的話)。

           若要建立 Modules 目錄,請輸入:

               new-item -type directory -path $home\Documents\WindowsPowerShell\Modules

        2. 將整個模組資料夾複製至 Modules 目錄。

           您可以使用任何方法來複製資料夾,包括 Windows 檔案總管、Cmd.exe 以
           及 Windows PowerShell。

           在 Windows PowerShell 中,請使用 Copy-Item Cmdlet。例如,若要將位
           於 C:\ps-test\MyModule 的 MyModule 資料夾複製至 Modules 目錄,請輸
           入:

               copy-item -path c:\ps-test\MyModule -dest $home\Documents\WindowsPowerShell\Modules

    您可以將模組安裝在任何位置,但是若將模組安裝在預設模組位置,會比較容易管
    理。如需預設模組位置的詳細資訊,請參閱<模組位置和 PSModulePath>一節。



 如何尋找已安裝的模組
     安裝模組之後,您可以將它匯入至 Windows PowerShell 工作階段。

     若要尋找已安裝於預設模組位置的模組,請在 Windows PowerShell 提示輸入:

         get-module -listAvailable


     若要尋找已匯入至工作階段的模組,請在 Windows PowerShell 提示輸入:

         get-module

     如需 Get-Module Cmdlet 的詳細資訊,請參閱 Get-Module。
      


 如何匯入模組
    若要使用模組中的命令,請將模組匯入至 Windows PowerShell 工作階段。

    若要從預設模組位置將模組匯入至目前的工作階段,請使用下列命令格式。

        import-module <模組名稱>
    
    例如,下列命令會將 BitsTransfer 模組匯入至目前的工作階段。

        import-module BitsTransfer

       
 
    若要匯入不在預設模組位置的模組,請在命令中使用該模組資料夾的完整路徑。

    例如,若要將 C:\ps-test 目錄中的 TestCmdlets 模組新增至工作階段,請輸入:

        import-module c:\ps-test\TestCmdlets

    如需新增模組至工作階段的詳細資訊,請參閱 Import-Module。
    


 如何將所有模組匯入至 WINDOWS POWERSHELL 工作階段 
    在 Windows 7 和 Windows Server 2008 R2 中,「匯入所有模組」工作會開啟一個
    Windows PowerShell 工作階段,其中包含所有可用的 Windows PowerShell 模組與
    嵌入式管理單元。

    若要啟動內含所有可用 Windows PowerShell 模組與嵌入式管理單元的 
    Windows PowerShell 工作階段,請使用下列程序。

    -- 以滑鼠右鍵按一下工作列的 Windows PowerShell 圖示,然後按一下 [匯入所有
       模組]。

    注意:在 Windows Server 2008 R2 中,Windows PowerShell 圖示預設會固定出現在
          工作列中。不過,您必須先啟動一次 Windows PowerShell,才會出現 [匯入所
          有模組] 工作。

    在其他的 Windows 版本中,若要將所有可用的模組匯入至工作階段,請在 
    Windows PowerShell 提示輸入:

        get-module -listAvailable |import-module


   
 如何尋找模組中的命令
    將模組匯入至 Windows PowerShell 工作階段之後,您就可以使用模組中的命令。

    若要尋找模組新增的命令,請在 Windows PowerShell 提示輸入:

        get-command -module <模組-名稱>

    例如,若要尋找 BitsTransfer 模組新增的命令,請輸入:

        get-command -module BitsTransfer

    如需 Get-Command Cmdlet 的詳細資訊,請參閱 Get-Command。



 如何尋找模組中的命令說明
    如果模組包含其匯出之命令的說明主題,Get-Help Cmdlet 便會顯示說明主題。請使
    用 Windows PowerShell 中任何說明主題所用的相同命令格式。

    若要尋找模組中命令的說明主題,請在 Windows PowerShell 提示輸入:

        get-help <命令-名稱>

    如需更詳細的說明,請輸入:

        get-help <命令-名稱> -detailed

    例如,若要尋找 Start-BitsTransfer Cmdlet 的詳細說明,請輸入:
       
        get-help Start-BitsTransfer -detailed

    如需 Get-Help 模組的詳細資訊,請參閱 Get-Help。




 如何移除模組
    移除模組時,該模組所新增的命令也會從工作階段中刪除。

    若要從工作階段移除模組,請使用下列命令格式。

        remove-module <模組-名稱>

    例如,下列命令會從目前的工作階段移除 BitsTransfer 模組。

        remove-module BitsTransfer

    移除模組是指,反轉匯入模組的作業。移除模組並不會解除安裝模組。如需
    Remove-Module Cmdlet 的詳細資訊,請參閱 Remove-Module。



 如何將模組匯入至每個工作階段
    Import-Module 命令會將模組匯入至目前的 Windows PowerShell 工作階段。此命令
    只會影響目前的工作階段。

    若要將模組匯入至您啟動的每一個 Windows PowerShell 工作階段,請將
    Import-Module 命令新增至 Windows PowerShell 設定檔。

    如需設定檔的詳細資訊,請參閱 about_Profiles。

  
 模組位置和 PSMODULEPATH
    Windows PowerShell 模組共有兩個預設位置,一個用於系統,另一個用於目前使用
    者。

        系統:     $pshome\Modules
                            (%windir%\System32\WindowsPowerShell\v1.0\Modules)

        目前使用者:  $home\Documents\WindowsPowerShell\Modules 
                            (%UserProfile%\Documents\WindowsPowerShell\Modules)

                           - 或 -

                        $home\My Documents\WindowsPowerShell\Modules
                (%UserProfile%\My Documents\WindowsPowerShell\Modules)



        注意:對於 Windows Vista、Windows Server 2008 與較新的 Windows 版本,
              若要在 %Windir%\System32 目錄中新增或變更檔案,請使用 [以系統管
              理員身分執行] 選項啟動 Windows PowerShell。


    您可以變更 PSModulePath 環境變數 ($env:psmodulepath) 的值,藉此變更系統的
    預設模組位置。PSModulePath 環境變數是以 Path 環境變數為模式而產生,兩者具
    有相同格式。
 

    若要檢視預設模組位置,請輸入:

        $env:psmodulepath

    若要新增預設模組位置,請使用下列命令格式。

        $env:psmodulepath = $env:psmodulepath + ";<路徑>"

    命令中的分號 (;) 是用於在清單中分隔新路徑與其前面的路徑。


    例如,若要新增 "C:\ps-test\Modules" 目錄,請輸入:

        $env:psmodulepath + ";c:\ps-test\Modules"


    當您新增路徑至 PSModulePath 時,Get-Module 和 Import-Module 命令便會將模
    組加入該路徑中。
       
    您設定的值只會影響目前的工作階段。若要進行永久變更,請將命令新增至您的 
    Windows PowerShell 設定檔,或使用 [控制台] 的 [系統] 項目,變更登錄中
    PSModulePath 環境變數的值。

    如需 PSModulePath 變數的詳細資訊,請參閱 about_Environment_Variables。
   


 模組和名稱衝突
    工作階段中超過一個命令具有相同名稱時,便會發生名稱衝突。當模組中的命令名
    稱,與工作階段的命令或項目名稱相同時,匯入模組就會造成名稱衝突。

    名稱衝突會導致命令遭到隱藏或取代。

        -- 隱藏:當您輸入命令名稱時,如果某個命令不是要執行的那個命令,這個
           命令就會隱藏起來,不過您可以使用其他方法來執行這個命令,例如以該
           命令的來源模組或嵌入式管理單元的名稱來限定命令名稱。

        -- 取代:當一個命令被相同名稱的其他命令覆寫,因而無法執行時,這個命
           令就是被取代了。就算移除造成衝突的模組也無法執行已遭取代的命令,
           除非您重新啟動工作階段。


    Import-Module 新增的命令可能會隱藏及取代目前工作階段中的命令。同樣的,工作
    階段中的命令也可能隱藏模組新增的命令。

    為避免名稱衝突,請使用 Import-Command 的 Prefix 參數,為匯入的命令建立唯一
    名稱。

    此外,您也可以使用 Import-Module 的 Alias、Cmdlet、Function 和 Variable 參
    數,僅選取您要匯入的命令,並排除會在工作階段中造成名稱衝突的命令。

    即使命令被隱藏起來,您仍可以使用該命令的來源模組或嵌入式管理單元的名稱來限
    定命令名稱,藉此執行該命令。

    當工作階段包含名稱相同的命令時,由 Windows PowerShell 命令優先順序規則判斷
    要執行哪個命令。

    例如,當工作階段包含的函數和 Cmdlet 具有相同名稱時,Windows PowerShell 預設
    會執行函數。當工作階段中相同類型的命令具有相同名稱時 (例如兩個 Cmdlet 的名
    稱相同),則預設會執行最後新增的命令。

    如需詳細資訊,包括優先順序規則的說明和執行隱藏命令的指示,
    請參閱 about_Command_Precedence。
     
     
       
 模組和嵌入式管理單元
    您可以從模組和嵌入式管理單元新增命令至工作階段。模組可以新增所有類型的命
    令,包括 Cmdlet、提供者、函數以及項目,例如變數、別名和 Windows PowerShell 
    磁碟機。而嵌入式管理單元只能新增 Cmdlet 和提供者。

    雖然您可以透過輸入或執行用於新增的指令碼等方法,將函數、別名、變數及磁碟機
    新增至工作階段,但事實上,工作階段中的所有 Cmdlet 和提供者都來自模組或嵌入
    式管理單元。

    從工作階段移除模組或嵌入式管理單元之前,請先使用下列命令判斷將會移除哪些命
    令。

    若要尋找工作階段中某個 Cmdlet 的來源,請使用下列命令格式:

        get-command <Cmdlet 名稱> | format-list -property verb, noun, pssnapin, module

    例如,若要尋找 Get-Date Cmdlet 的來源,請輸入:

        get-command get-date | format-list -property verb, noun, pssnapin, module

    如需 Windows PowerShell 嵌入式管理單元的詳細資訊,請參閱 about_PSSnapins。


請參閱
    about_Command_Precedence
    about_PSSnapins
    Get-Command
    Get-Help
    Get-Module
    Import-Module
    Remove-Module