我可以在远程服务器上启动5个新的PS会话,并通过运行Get-PSSession查看它们所有。
PS C:\> New-PSSession -ComputerName MyServerName
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Session1 MyServerName Opened Microsoft.PowerShell Available
[repeat 4 more times]
正如预期的那样,当我尝试打开第6个会话时,会出现错误提示,说这是不允许的(由于PowerShell默认限制为5个并发远程PSSessions)。但运行Get-Session会显示所有5个会话,所以目前一切都按照应该的方式工作:
PS C:\> New-PSSession -ComputerName MyServerName
New-PSSession : [......maximum number of 5 concurrent shells]
PS C:\> Get-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Session1 MyServerName Opened Microsoft.PowerShell Available
2 Session2 MyServerName Opened Microsoft.PowerShell Available
3 Session3 MyServerName Opened Microsoft.PowerShell Available
4 Session4 MyServerName Opened Microsoft.PowerShell Available
5 Session5 MyServerName Opened Microsoft.PowerShell Available
然而,当我关闭那个控制台并打开一个新的控制台时,运行 Get-PSSession(无论是否定义了“-ComputerName”参数)都不会显示任何已打开的会话。
PS C:\> Get-PSSession
PS C:\>
我知道这些会话仍然处于打开状态,因为当我尝试在新控制台中打开一个新会话时,我会收到与超过5个并发会话相关的相同错误:
PS C:\> New-PSSession -ComputerName MyServerName
New-PSSession : [......maximum number of 5 concurrent shells]
根据运行'Get-PSSession Get-Help -full'命令,运行'Get-PSSession -ComputerName MyServerName'应该会获取特定服务器上的所有远程PS会话,无论它们是在哪个会话或计算机上启动的(至少这是我理解的方式):
“该命令返回[远程服务器]上的所有会话,即使它们是在不同的会话或不同的计算机上创建的。”
因此,有没有一种方法可以查找和/或删除远程服务器上任何打开的PS会话,而无需从一个控制台会话中执行所有操作?