主题
    about_PSSessions

简短说明
    介绍 Winodos PowerShell 会话 (PSSession),并说明如何与远程计算机建立持续性连接。


详细说明
    若要在远程计算机上运行 Windows PowerShell 命令,可以使用 cmdlet 的 ComputerName 
    参数,也可以创建 Windows PowerShell 会话 (PSSession),然后在 PSSession 中运行命令。

    创建 PSSession 后,Windows PowerShell 建立与远程计算机的持续性连接。使用 PSSession 
    可在远程计算机上运行一系列相关命令。在同一 PSSession 中运行的命令可共享数据(如变量值、
    别名和函数)。

    此外,还可以在本地计算机上创建 PSSession,然后在其中运行命令。本地 PSSession 使用 
    Windows PowerShell 远程处理基础结构来创建和维护 PSSession。

    本主题说明如何创建、使用、获取和删除 PSSession。有关高级信息,请键入"get-help 
    about_PSSession_details"。

    注意:PSSession 使用 Windows PowerShell 远程处理基础结构。
          若要使用 PSSsession,必须为本地和远程计算机配置远程处理。有关详细信息,请参阅 
          about_remote_requirements。

          在 Windows Vista 以及更高版本的 Windows 上,要在本地计算机上创建 PSSession,
          在打开 Windows PowerShell 时必须启用"以管理员身份运行"选项。

 什么是会话?
    会话是 Windows PowerShell 的运行环境。
    每次打开 Windows PowerShell 都会创建一个会话,在此会话中可运行命令。您也可以向会话添加
    项目(如模块和管理单元),还可以创建项目(如变量、函数和别名)。这些项目仅在该会话中存在,
    会话结束时即会删除。

    您也可以在本地计算机或远程计算机上创建其他会话,这些会话称为“Windows PowerShell 会话”
    或“PSSession”。与默认会话一样,您可以在 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 和默认友好名称。在创建会话时可以指定备用友好名称。

        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 时,可通过 ID 或名称,或者其实例 ID (GUID) 引用 PSSession。
    以下命令按 ID 获取 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,则在关闭当前会话或 Windows PowerShell 之前,PSSession 保持为
    打开和可用的状态。

    您也可以使用 New-PSSession 的 TimeOut 参数设置空闲 PSSession 的到期时间。有关详细信
    息,请键入"get-help new-PSSession -full"。


 PSSession 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  




目录