Get-PSSession

获取当前会话中的 Windows PowerShell 会话 (PSSession)。

语法

Get-PSSession [[-ComputerName] <string[]>] [<CommonParameters>]

Get-PSSession [-Id] <Int32[]> [<CommonParameters>]

Get-PSSession [-InstanceId <Guid[]>] [<CommonParameters>]

Get-PSSession [-Name <string[]>] [<CommonParameters>]

说明

Get-PSSession cmdlet 获取当前会话中创建的 Windows PowerShell 会话 (PSSession)。

如果不使用参数,则 Get-PSSession 获取在当前会话中创建的所有 PSSession。可以使用 Get-PSSession 的参数获取连接到特定计算机的会话,也可以通过名称、ID 或实例 ID 来标识会话。

有关 Windows PowerShell 会话的详细信息,请参阅 about_PSSessions。

参数

-ComputerName <string[]>

只获取连接到指定计算机的 PSSession。允许使用通配符。

键入一台或多台计算机的 NetBIOS 名称、IP 地址或完全限定的域名。要指定本地计算机,请键入计算机名称、“localhost”或句点 (.)。

是否为必需?

false

位置?

1

默认值

是否接受管道输入?

true (ByPropertyName)

是否接受通配符?

true

-Id <Int32[]>

只获取具有指定 ID 的 PSSession。键入一个或多个 ID(以逗号分隔)或使用范围运算符 (..)来指定 ID 的范围。

ID 是一个整数,用于在当前会话中唯一标识 PSSession。它比 InstanceId 更容易记住和键入,但它仅仅在当前会话中是唯一的。要查找 PSSession 的 ID,请使用不带参数的 Get-PSSession。

是否为必需?

true

位置?

1

默认值

Shell 中的所有会话

是否接受管道输入?

true (ByPropertyName)

是否接受通配符?

false

-InstanceId <Guid[]>

只获取具有指定实例 ID 的 PSSession。

实例 ID 是一个 GUID,用于在本地或远程计算机上唯一地标识 PSSession。即使在 Windows PowerShell 中运行了多个会话,InstanceID 也是唯一的。

InstanceID 存储在表示 PSSession 的对象的 InstanceID 属性中。要查找当前会话中的 PSSession 的 InstanceID,请键入“get-pssession | Format-Table Name, ComputerName, InstanceId”。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

true (ByPropertyName)

是否接受通配符?

true

-Name <string[]>

只获取具有指定友好名称的 PSSession。允许使用通配符。

要查找当前会话中的 PSSession 的名称,请键入不带参数的“get-pssession”。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

true (ByPropertyName)

是否接受通配符?

true

<CommonParameters>

此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.

输入和输出

输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。

输入

不能通过管道将输入传递给此 cmdlet。

输出

System.Management.Automation.Runspaces.PSSession

Get-PSSession 为所获取的每个 PSSession 返回一个 PSSession 对象。

说明

Get-PSSession 获取在当前会话中创建的 PSSession。它不会获取在打开 Windows PowerShell 时创建的会话,也不获取在其他会话中或其他计算机上创建的 PSSession,即使它们连接到本地计算机也是如此。

示例 1

C:\PS>get-pssession

说明
-----------
此命令获取在当前会话中创建的所有 PSSession。

该命令不会获取在其他会话中或其他计算机上创建的会话,即使它们连接到本计算机也是如此。





示例 2

C:\PS>$s = get-pssession -computername Server02

说明
-----------
此命令获取连接到 Server02 计算机的 PSSession,并将它们保存在 $p 变量中。





示例 3

C:\PS>new-pssession -computername Server01, Server02, Server03

C:\PS> $s1, $s2, $s3 = get-pssession

说明
-----------
此示例说明如何将 Get-PSSession 命令的结果保存在多个变量中。

第一条命令使用 New-PSSession cmdlet 在三台远程计算机上创建 PSSession。

第二条命令使用 Get-PSSession cmdlet 来获取这三个 PSSession。然后,将其中的每个 PSSession 分别保存在一个单独的变量中。

Windows PowerShell 将对象数组分配给变量数组时,会将第一个对象分配给第一个变量,将第二个对象分配给第二个变量,依此类推。如果对象多于变量,则会将数组中所有剩余的对象均分配给最后一个变量。如果变量多于对象,则弃用额外的变量。





示例 4

C:\PS>get-pssession | format-table -property computername, InstanceID

C:\PS> $s = get-pssession -InstanceID a786be29-a6bb-40da-80fb-782c67f7db0f

C:\PS> remove-pssession -session $s

说明
-----------
此示例说明如何使用实例 ID 获取 PSSession,然后再将其删除。

第一条命令获取本地计算机上的所有 PSSession。该命令将 PSSession 发送给 Format-Table cmdlet,后者显示每个 PSSession 的 ComputerName 和 InstanceID 属性。

第二条命令使用 Get-PSSession cmdlet 来获取特定的 PSSession 并将其保存在 $s 变量中。该命令使用 InstanceID 参数来标识 PSSession。

第三条命令使用 Remove-PSSession cmdlet 删除 $s 变量中的 PSSession。





示例 5

C:\PS>get-pssession -computername Serv*

说明
-----------
此命令获取连接到计算机名称以“Serv”开头的计算机的所有 PSSession。





示例 6

C:\PS>get-pssession -name Test*, Ux*

说明
-----------
此命令获取名称以“Test”或“Ux”开头的 PSSession。





示例 7

C:\PS>get-pssession 2

说明
-----------
此命令获取 ID 为 2 的 PSSession。





另请参阅

概念

about_PSSessions
about_Remote
New-PSSession
Remove-PSSession
Enter-PSSession
Exit-PSSession
Invoke-Command