主題
    about_PSSessions

簡短描述
    說明 Windows PowerShell 工作階段 (PSSession) 並解釋如何建立與遠端電腦之間
    的固定連線。


完整描述
    若要在遠端電腦上執行 Windows PowerShell 命令,您可以使用 Cmdlet 的
    ComputerName 參數,也可以建立 Windows PowerShell 工作階段 (PSSession),
    然後在 PSSession 中執行命令。

    建立 PSSession 時,Windows PowerShell 會建立與遠端電腦之間的固定連線。使用
    PSSession 可在遠端電腦上執行一系列相關命令,在同一個 PSSession 中執行的命
    令可以共用資料,例如變數、別名和函數的值。

    您也可以在本機電腦上建立 PSSession 並於其中執行命令。本機 PSSession 使用 
    Windows PowerShell 遠端基礎結構來建立並維護 PSSession。

    本主題說明如何建立、使用、取得和刪除 PSSession。如需進階的詳細資訊,請參閱
    about_PSSession_Details。

    注意:PSSession 使用 Windows PowerShell 遠端基礎結構。
          若要使用 PSSession,本機和遠端電腦都必須完成遠端功能的設定。如需詳細
          資訊,請參閱 about_Remote_Requirements。
          在 Windows Vista 和更新版的 Windows 中,若要在本機電腦上建立 
	  PSSession, 您必須以 [以系統管理員身分執行] 選項啟動 
          Windows PowerShell。

 何謂工作階段
    工作階段是指 Windows PowerShell 在其中執行的環境。
    每次啟動 Windows PowerShell 時,就會建立一個工作階段,您可以在工作階段中執
    行命令。您也可以新增項目 (例如模組和嵌入式管理單元) 至工作階段,以及建立項
    目 (例如變數、函數和別名)。這些項目只存在於該工作階段,當工作階段結束時就
    會被刪除。

    您也可以在本機電腦或在遠端電腦建立額外的工作階段,這稱為「Windows PowerShell
    工作階段」或 "PSSessions"。與預設工作階段相同的是,您可以在 PSSession 中執
    行命令、新增及建立項目。

    不過,與自動啟動的工作階段不同的地方在於,您可以控制自己建立的 PSSession。
    您可以取得、建立、設定和移除這些 PSSession,也可以在同一個 PSSession 中執行
    多個命令。PSSession 會一直保持開啟且可供使用,直到您從工作階段將之刪除。
      
    一般而言,建立 PSSession 是用來在遠端電腦上執行一系列相關命令。當您在遠端電
    腦上建立 PSSession 時,Windows PowerShell 會建立與遠端電腦之間的固定連線以便
    支援工作階段。

    如果您使用 Invoke-Command 或 Enter-PSSession Cmdlet 的 computerName 參數來執
    行遠端命令或啟動互動式工作階段,Windows PowerShell 會在遠端電腦上建立暫存工
    作階段,一旦命令完成或互動式工作階段結束,就會立即關閉該工作階段。您無法控制
    這些暫存工作階段,且只能用於單一命令或單一互動式工作階段。

    在 Windows PowerShell 中,「目前工作階段」是指您正在使用的工作階段。「目前工
    作階段」可以代表任何工作階段,包括暫存工作階段或 PSSession。


 為何使用 PSSESSION
    當您需要與遠端電腦之間的固定連線時,請使用 PSSession。您可以使用 PSSession
    執行共用資料 (例如變數的值、函數的內容或別名的定義) 的一系列命令。

    您可以不建立 PSSession 直接執行遠端命令。使用啟用遠端功能之 Cmdlet 的
    ComputerName 參數,可在一部或多部電腦上執行單一命令或一系列不相關的命令。

    當您使用 Invoke-Expression 或 Enter-PSSession 的 ComputerName 參數時,
    Windows PowerShell 會建立連往遠端電腦的暫時連線,並在命令完成時立即關
    閉連線。連線關閉時,您所建立的任何資料元素都會遺失。

    其他具有 ComputerName 參數的 Cmdlet (例如 Get-Eventlog 和 Get-WmiObject) 
    則使用不同的遠端技術來收集資料,但沒有任何一項採用與 PSSession 相同的固定
    連線。
     

 如何建立 PSSESSION
    若要建立 PSSession,請使用 New-PSSession Cmdlet。若要在遠端電腦上建立 
    PSSession,請使用 New-PSSession Cmdlet 的 ComputerName 參數。

    例如,下列命令會在 Server01 電腦上建立新的 PSSession。

        new-pssession -computername Server01

    當您提交命令時,New-PSSession 就會建立 PSSession 並傳回代表 PSSession 的
    物件。您可以在建立 PSSession 時將物件儲存到變數中,或是稍後使用 
    Get-PSSession 命令取得 PSSession。

    例如,下列命令會在 Server01 電腦上建立新的 PSSession,然後將產生的物件儲
    存在 $ps 變數中。
    
        $ps = new-pssession -computername Server01


 如何在多部電腦上建立 PSSESSION
    若要在多部電腦上建立 PSSession,請使用 New-PSSession Cmdlet 的 ComputerName
    參數,並以逗號分隔的清單輸入遠端電腦的名稱。

    例如,若要在 Server01、Server02 和 Server03 電腦上建立 PSSession,請輸入:

        new-PSSession -computername Server01, Server02, Server03

    New-PSSession 會在每一部遠端電腦上建立一個 PSSession。


 如何取得 PSSESSION
    若要取得在目前工作階段中建立的 PSSession,請使用 Get-PSSession Cmdlet。
    Get-PSSession 會傳回與 New-PSSession 相同的物件類型。

    下列命令會取得在目前工作階段中建立的所有 PSSession。

        get-PSSession

    PSSession 的預設顯示會列出識別碼和預設的顯示名稱。您可以在建立工作階段時指派其他的顯示名稱。

        Id   Name       ComputerName    State    ConfigurationName
        ---  ----       ------------    -----    ---------------------
        1    Session1   Server01        Opened   Microsoft.PowerShell
        2    Session2   Server02        Opened   Microsoft.PowerShell
        3    Session3   Server03        Opened   Microsoft.PowerShell

   
    您也可以將 PSSession 儲存到變數中。下列命令會取得 PSSession,並將它們儲存
    在 $ps123 變數中。

        $ps123 = get-PSSession

    使用 PSSession Cmdlet 時,您可以透過 PSSession 的識別碼、名稱或執行個體識
    別碼 (GUID) 來參照該 PSSession。下列命令會經由識別碼取得 PSSession,並將
    它儲存在 $ps01 變數中。

        $ps01 = get-PSSession -id 1

    Get-PSSession 只會取得在目前工作階段中建立的 PSSession。它不會取得在其他工
    作階段中或在其他電腦所建立的 PSSession,即使這些工作階段連線至本機電腦且正
    在執行命令也一樣。



 如何在 PSSESSION 中執行命令
    若要在一個或多個 PSSession 中執行命令,請使用 Invoke-Command Cmdlet,並且
    使用 Session 參數可指定 PSSession,而使用 ScriptBlock 參數可指定命令。

    例如,若要在 $ps123 變數所儲存的三個 PSSession 中執行 Get-ChildItem ("dir")
    命令,請輸入:

        invoke-command -session $ps123 -scriptblock {get-childitem}

 
 如何刪除 PSSESSION
    當您使用完 PSSession 後,請使用 Remove-PSSession Cmdlet 刪除 PSSession 並
    釋放其所使用的資源。

        remove-PSSession -session $ps

        - 或 - 
          
        remove-PSSession -id 1
 
    如果您不刪除 PSSession,則 PSSession 會一直保持開啟且可供使用,除非您關閉
    目前工作階段或結束 Windows PowerShell。

    您也可以使用 New-PSSession 的 TimeOut 參數,設定閒置 PSSession 的到期時間。
    如需詳細資訊,請參閱 new-PSSession。


 PSSESSION CMDLET

    Cmdlet                  描述
    -----------------       ------------------------------------------------
    New-PSSession	在本機或遠端電腦上建立新的 PSSession。

    Get-PSSession	取得目前工作階段中的 PSSession。

    Remove-PSSession	刪除目前工作階段中的 PSSession。

    Enter-PSSession	啟動互動式工作階段。

    Exit-PSSession	結束互動式工作階段。

    如需 PSSession Cmdlet 的清單,請輸入:

	get-help *-PSSession


 詳細資訊
    如需 PSSession 的詳細資訊,請參閱 about_PSSession_Details。
    

請參閱
    about_Remote
    about_Remote_Requirements
    New-PSSession
    Get-PSSession
    Remove-PSSession
    Enter-PSSession
    Exit-PSSession
    Invoke-Command  




目錄