为什么管道Get-PSSession到Exit-PSSession不起作用?

时间:2015-06-16 09:07:01

标签: powershell

我正在创建一个新的Powershell会话:

New-PSSession -ConnectionUri https://myserver:12345 -Credential myserver\username -Authentication default

这很好,我可以做Get-PSSession,它为我提供了一个会话。但是,当试图将结果传递给Exit-PSSession时,事情会变得混乱。所以这个:

Get-PSSession | Exit-PSSession

或者这个:

Get-PSSession 1 | Exit-PSSession

会出错:

  

Exit-PSSession:输入对象不能绑定到命令的任何参数,因为该命令不接受管道输入或输入及其属性与管道输入的任何参数都不匹配。

我尝试通过执行Get-PSSession | Get-Member来修复/理解这一点,它确认从第一个命令返回了一个正确的对象。

我也试过Get-Help Exit-PSSession,看到它只有[<CommonParameters>],这让我首先想知道它的用途(它可能是一个退出PSSession的命令行,你当前在?)。无论如何,这确实解释了为什么管道到该命令行开关不起作用。

我还检查了Get-Help Disconnect-PSSession,但只是断开连接并离开PSSession,似乎。

结论:我(我想)正在寻找New-PSSession对面,但似乎无法找到它。 摆脱PSSession的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

你看起来不够紧密。不要忘记,通过这样的方式很容易获得与某个主题相关的所有cmdlet:

 Get-Help PSSession

这将获得所有cmdlet的列表,其中包含&#34; PSSession&#34;它的名字。如果您仔细查看输出,请Exit-PSSessionDisconnect-PSSession,但还有一个:Remove-PSSession。如果查看the extended help,您会发现它的名称可能比其名称所暗示的更多(强调我的):

  

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

所以它并不只是&#34;删除&#34;视线中的PSSession,但它也会关闭会话并断开与远程计算机的连接。

来自Get-PSSession的管道将按预期工作:

Get-PSSession | Remove-PSSession