Exit 的行为与 Exit-PSSession 不同

Exit not behaving the same as Exit-PSSession

Microsoft documentation 说:

Example 3: Use the Exit keyword to stop a session

PS C:\> Enter-PSSession -computername Server01 Server01\PS> exit PS C:\>

This example uses the Exit keyword to stop an interactive session started by using Enter-PSSession. The Exit keyword has the same effect as using Exit-PSSession.

这意味着 Exit 等同于 Exit-PSSession

但是,Exit 的行为与 Exit-PSSession 不同。

例如,以下输出 "blah" :

Exit-PSSession
Write-Host "blah"

但这不是 :

Exit
Write-Host "blah"

我是不是做错了什么?

如果您的 PowerShell 会话不是使用 Enter-PSSession 输入的 远程 会话,Exit-PSSession 是安静的无操作,即安静地执行.

相比之下,exit 在本地和远程会话中都有效。

换句话说:

  • 使用 Exit-PSSession 仅在 远程 会话[1]
  • 中有意义
  • 只有 exit 个等价物。

换句话说:

  • Exit-PSSession 似乎主要是为了与 Enter-PSSession 对称而存在。
  • 您可以选择只使用 exit,这也有在 local 会话中工作的优势。

至于PS远程计算机上的会话本身是否继续存在(注意最多[​​= 100=]v2 远程会话仅存在于 客户端 计算机上):

这取决于它最初是如何创建的:

  • 如果会话是通过将计算机名称传递给 Enter-PSSession (Enter-PSSession -ComputerName ...) 隐式 创建的,它将自动关闭并在退出会话时丢弃(无论您使用的是 exit 还是 Exit-PSSession)。

  • 相比之下,如果您明确地首先创建了一个与New-PSSession的会话并将其传递给Enter-PSSessionEnter-PSSession -Session ...),它将在您退出 interactive 会话后继续存在并保持打开状态(同样,无论退出方法如何),因此稍后可以重新进入(或使用 Invoke-Command, 例如).

Get-PSSession 列出在本地明确创建的会话; Get-PSSession -ComputerName ... 列出给定远程计算机的会话。


[1] 正如 docs 所暗示的那样(强调):"Ends an interactive session with a remote computer." 和“Exit-PSSession cmdlet 结束交互式会话 您使用 Enter-PSSession cmdlet.

开始