Microsoft documentation说:



这意味着ExitExit-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 仅在客户端计算机上存在):

    这取决于最初创建它的方式:
  • 如果 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 。

    08-26 02:21