get-pssession 用于查询当前 powershell 进程中已创建、未关闭的 pssession 对象,支持按 computername、name、instanceid 等参数精准筛选,并常与 disconnect-pssession、connect-pssession 等配合完成会话生命周期管理。
get-pssession 用于查看当前 powershell 会话中已创建、尚未关闭的 pssession 对象,包括本地和远程会话。它本身不管理(如断开或删除)会话,而是提供查询能力——只有先“看到”会话,才能进一步操作。
查看所有当前活动的 PSSession
运行以下命令即可列出本会话中所有已建立、状态为 Opened 的会话:
-
Get-PSSession—— 默认显示当前会话中所有 PSSession,含 ID、Name、ComputerName、State、ConfigurationName 等关键字段 -
Get-PSSession | Where-Object State -eq 'Opened'—— 显式筛选出真正活跃的会话(排除 Disconnected 或 Closed 状态) -
Get-PSSession | Format-Table Id, Name, ComputerName, State, ConfigurationName -AutoSize—— 更清晰地以表格形式呈现核心信息
按条件精准定位特定会话
实际运维中常需快速定位某类会话,可结合参数缩小范围:
- 查某台远程主机的所有会话:
Get-PSSession -ComputerName "Server01" - 查名称匹配的会话:
Get-PSSession -Name "Session-*"(支持通配符) - 查指定配置名的会话:
Get-PSSession -ConfigurationName "Microsoft.PowerShell" - 查特定实例 ID 的会话:
Get-PSSession -InstanceId 123e4567-e89b-12d3-a456-426614174000 - 查容器或虚拟机中的会话:
Get-PSSession -ContainerId "abc123..."或-VMName "Win11-Test"
配合其他 cmdlet 完成典型管理动作
Get-PSSession 是“发现”步骤,后续常与 Disconnect-PSSession、Connect-PSSession、Remove-PSSession 配合使用:
- 断开所有活跃会话(保留状态,可重连):
Get-PSSession -State Opened | Disconnect-PSSession - 重连已断开的会话:
Get-PSSession -State Disconnected | Connect-PSSession - 彻底清理当前会话中所有 PSSession:
Get-PSSession | Remove-PSSession - 只删某台主机的会话:
Get-PSSession -ComputerName "DB02" | Remove-PSSession
注意状态与生命周期的关键细节
PSSession 在 Windows 上默认保留在远程计算机上(服务端持久化),即使本地断开或 PowerShell 关闭,只要未超时或被显式删除,仍可重新连接。因此:
-
Get-PSSession只返回“当前 PowerShell 进程中已导入”的会话对象,不自动枚举远程端所有遗留会话 - 若想查看远程计算机上实际存在的所有会话(含其他用户创建的),需在该远程机上执行
Get-PSSession,或使用Invoke-Command -ComputerName ... -ScriptBlock { Get-PSSession } - 会话超时时间由
$PSSessionOption或服务器端winrm get winrm/config中的MaxTimeoutms控制,默认约 1 小时











