Remove-PSSession

关闭一个或多个 Windows PowerShell 会话 (PSSession)。

语法

Remove-PSSession
      [-Id] <Int32[]>
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-PSSession
      [-Session] <PSSession[]>
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-PSSession
      -ContainerId <String[]>
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-PSSession
      -VMId <Guid[]>
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-PSSession
      -VMName <String[]>
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-PSSession
      -InstanceId <Guid[]>
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-PSSession
      -Name <String[]>
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-PSSession
      [-ComputerName] <String[]>
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

说明

Remove-PSSession cmdlet 关闭当前会话中的 PowerShell 会话(PSSession)。 它将停止在 PSSession 中运行的任何命令、结束 PSSession,并释放 PSSession 使用的资源。 如果 PSSession 连接到远程计算机,则此 cmdlet 还会关闭本地计算机和远程计算机之间的连接。

若要删除 PSSession,请输入会话的 Name、ComputerName、ID 或 InstanceID

如果你已将 PSSession 保存在变量中,则会话对象将保留在该变量中,但 PSSession 的状态为 Closed。

示例

示例 1:按 ID 移除会话

Remove-PSSession -Id 1, 2

此命令移除 ID 为 12 的 PSSession

示例 2:删除当前会话中的所有会话

Get-PSSession | Remove-PSSession
Remove-PSSession -Session (Get-PSSession)
$s = Get-PSSession
Remove-PSSession -Session $s

这些命令将删除当前会话中的所有 PSSession。 虽然这三个命令格式看起来不同,但它们具有相同的效果。

示例 3:按名称关闭会话

$r = Get-PSSession -ComputerName Serv*
$r | Remove-PSSession

这些命令关闭连接到名称以 Serv 开头的计算机的 PSSession

示例 4:关闭连接到某个端口的会话

Get-PSSession | where {$_.port -eq 90} | Remove-PSSession

此命令将关闭连接到端口 90 的 PSSession。 你可以使用此命令格式,通过 ComputerName、Name、InstanceID 和 ID 以外的属性标识 PSSession

示例 5:按实例 ID 关闭会话

Get-PSSession | Format-Table ComputerName, InstanceID  -AutoSize

ComputerName InstanceId
------------ ----------------
Server01     875d231b-2788-4f36-9f67-2e50d63bb82a
localhost    c065ffa0-02c4-406e-84a3-dacb0d677868
Server02     4699cdbc-61d5-4e0d-b916-84f82ebede1f
Server03     4e5a3245-4c63-43e4-88d0-a7798bfc2414
TX-TEST-01   fc4e9dfa-f246-452d-9fa3-1adbdd64ae85

Remove-PSSession -InstanceID fc4e9dfa-f246-452d-9fa3-1adbdd64ae85

这些命令显示了如何基于其实例 ID(或 RemoteRunspaceID)关闭 PSSession

第一个命令使用 Get-PSSession cmdlet 获取当前会话中的 PSSession。 它使用管道运算符(|)将 PSSession 发送到 Format-Table cmdlet,该 cmdlet 格式化其在表中的 ComputerName 和 InstanceID 属性。 AutoSize 参数将压缩列以供显示。

从生成的显示内容中,可以标识要关闭的 PSSession,并将该 PSSession 的 InstanceID 复制和粘贴到第二个命令中。

第二个命令使用 Remove-PSSession cmdlet 移除具有指定实例 ID 的 PSSession

示例 6:创建删除当前会话中的所有会话的函数

Function EndPSS { Get-PSSession | Remove-PSSession }

此函数关闭当前会话中每个 PSSession。 在将此函数添加到 PowerShell 配置文件后,若要删除所有会话,请键入 EndPSS

参数

-ComputerName

指定计算机的名称数组。 此 cmdlet 关闭连接到指定计算机的 PSSession。 允许使用通配符。

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

类型:String[]
别名:Cn
Position:0
默认值:None
必需:True
接受管道输入:True
接受通配符:True

-Confirm

提示你在运行 cmdlet 之前进行确认。

类型:SwitchParameter
别名:cf
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-ContainerId

指定容器的 ID 数组。 此 cmdlet 移除每个指定容器的会话。 使用 docker ps 命令获取容器 ID 的列表。 有关详细信息,请参阅 docker ps 命令的帮助。

类型:String[]
Position:Named
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-Id

指定会话的 ID 数组。 此 cmdlet 关闭具有指定 ID 的 PSSession。 键入一个或多个 ID,用逗号分隔,或使用范围运算符(..)指定一系列 ID。

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

类型:Int32[]
Position:0
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-InstanceId

指定实例 ID 的数组。 此 cmdlet 关闭具有指定实例 ID 的 PSSession

实例 ID 是一个 GUID,用于在当前会话中唯一标识 PSSession。 即使在一台计算机上运行了多个会话,实例 ID 也是唯一的。

实例 ID 存储在表示 PSSession 的对象的 InstanceID 属性中。 若要查找当前会话中的 PSSessionInstanceID,请键入 Get-PSSession | Format-Table Name, ComputerName, InstanceId

类型:Guid[]
Position:Named
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-Name

指定会话的友好名称数组。 此 cmdlet 关闭具有指定友好名称的 PSSession。 允许使用通配符。

由于 PSSession 的易记名称可能不唯一,因此使用 Name参数时,请考虑在 Remove-PSSession 命令中使用 WhatIf 或 Confirm 参数。

类型:String[]
Position:Named
默认值:None
必需:True
接受管道输入:True
接受通配符:True

-Session

指定要关闭的 PSSession 的会话对象。 输入一个变量,其中包含 PSSession 或创建或获取 PSSession 的命令,例如 New-PSSessionGet-PSSession 命令。 还可以通过管道将一个或多个会话对象传递给 Remove-PSSession

类型:PSSession[]
Position:0
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-VMId

指定虚拟机的 ID 数组。 此 cmdlet 启动与每个指定虚拟机的交互式会话。 若要查看可用的虚拟机,请使用以下命令:

Get-VM | Select-Object -Property Name, ID

类型:Guid[]
别名:VMGuid
Position:Named
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-VMName

指定一个虚拟机的名称数组。 此 cmdlet 启动与每个指定虚拟机的交互式会话。 若要查看可用的虚拟机,请使用 Get-VM cmdlet。

类型:String[]
Position:Named
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-WhatIf

显示运行该 cmdlet 时会发生什么情况。 cmdlet 未运行。

类型:SwitchParameter
别名:wi
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

输入

PSSession

可以将会话对象通过管道传递给此 cmdlet。

输出

None

此 cmdlet 不返回任何输出。

备注

PowerShell 包含 Remove-PSSession 的以下别名:

  • 所有平台:

    • rsn
  • Id 参数是必需的。 若要删除当前会话中的所有 PSSession,请键入 Get-PSSession | Remove-PSSession

  • PSSession 使用与远程计算机的持续性连接。 创建 PSSession 以运行共享数据的一系列命令。 要了解详情,请键入 Get-Help about_PSSessions

  • PSSession 特定于当前会话。 结束某个会话时,将强制关闭你在该会话中创建的 PSSession