Microsoft documentation说:
这意味着Exit
与Exit-PSSession
等效。
但是,Exit
的行为与Exit-PSSession
不同。
例如,以下输出“blah”:
Exit-PSSession
Write-Host "blah"
但这不是:
Exit
Write-Host "blah"
难道我做错了什么?
最佳答案
如果您的PowerShell session 不是使用Enter-PSSession
输入的远程 session ,则Exit-PSSession
是安静的无操作,即,安静地不执行任何操作。
相比之下,exit
在本地和远程 session 中均有效。
换一种说法:
Exit-PSSession
的使用仅在远程 session 中有意义[1],而exit
。 换句话说:
Exit-PSSession
似乎主要是为了与Enter-PSSession
对称而存在。 exit
,这也具有在本地 session 中工作的优势。 关于远程计算机本身上的PS session 是否继续存在(请注意,最多PSv2远程 session 仅在客户端计算机上存在):
这取决于最初创建它的方式:
Enter-PSSession
(Enter-PSSession -ComputerName ...
)隐式创建的,则它将在退出 session 时自动关闭并丢弃(无论您使用exit
还是Exit-PSSession
)。 New-PSSession
显式创建了一个 session ,并将该 session 传递给Enter-PSSession
(Enter-PSSession -Session ...
),则该 session 将继续存在并在退出交互式 session 后保持打开状态(同样,无论退出方法如何),因此可以稍后重新输入(或与Invoke-Command
重用)。 Get-PSSession
列出在本地显式创建的 session ; Get-PSSession -ComputerName ...
列出给定远程计算机的 session 。[1]如docs所言(加重)所暗示:“结束与远程计算机的交互式 session 。”和“
Exit-PSSession
cmdlet结束您使用Enter-PSSession
cmdlet启动的交互式 session 。