Get-PSSession -ComputerName Server02
即使断开与会话的连接,会话也会保留在远程计算机上,直到将其删除或超时。
在 Windows PowerShell 2.0 中,只能获取在当前会话中创建的 PSSession。 无法获取在其他会话中创建的 PSSession。 有关详细信息,请参阅 Get-PSSession。
能否查看其他人在计算机上创建的 PSSession?
仅当提供创建 PSSession 的用户的凭据或 PSSession 使用的会话配置(包括 RunAs 凭据)时,才能获取和管理其他人创建的 PSSession 或会话配置。 否则,可以获取、连接、使用和管理仅创建的 PSSession。
是否可以从其他计算机连接到 PSSession?
从 Windows PowerShell 3.0 开始,Windows 计算机上的 PSSession 与在其中创建的会话无关。 在连接的远程或“服务器端”计算机上维护活动的 PSSession。
在 Windows 计算机上,可以使用 Disconnect-PSSession
cmdlet 与 PSSession 断开连接。 PSSession 与本地会话断开连接,但保留在远程计算机上。
命令将继续在断开连接的 PSSession 中运行。 可以关闭 PowerShell 并关闭原始计算机,而不会中断 PSSession。
然后,即使几个小时后,也可以使用 Get-PSSession
cmdlet 使 PSSession 和 Connect-PSSession
cmdlet 从不同 Windows 计算机上的新会话连接到 PSSession。 有关详细信息,请参阅 about_Remote_Disconnected_Sessions。
如果计算机停止,我的 PSSession 会发生什么情况?
断开连接的 PSSession 独立于在其中创建的会话。 如果断开 PSSession,然后关闭原始计算机,则 PSSession 将保留在远程计算机上。
此外,PowerShell 还会尝试恢复意外断开连接的活动 PSSession,例如计算机重新启动、临时停电或网络中断。 PowerShell 尝试维护或恢复 PSSession 到已打开状态(如果原始会话仍然可用),或者如果它不可用,则为断开连接状态。
“活动”PSSession 是运行命令的 PSSession。 如果连接会话关闭时 PSSession 已连接(未断开连接),并且命令在 PSSession 中运行,则 PowerShell 会尝试在远程计算机上维护 PSSession。 但是,如果未在 PSSession 中运行任何命令,则当连接的会话关闭时,PowerShell 将关闭 PSSession。 有关详细信息,请参阅 about_Remote_Disconnected_Sessions。
是否可以在 PSSession 中运行后台作业?
是的。 后台作业是在后台异步运行的命令,无需与当前会话交互。 提交命令以启动作业时,该命令将返回作业对象,但该作业将继续在后台运行,直到作业完成。
若要在本地计算机上启动后台作业,请使用 Start-Job
命令。
可以在临时连接(通过使用 ComputerName 参数)或 PSSession(通过使用会话参数)中运行后台作业。
若要在远程计算机上启动后台作业,请使用 Invoke-Command
cmdlet 及其 AsJob 参数,或使用 Invoke-Command
cmdlet 在远程计算机上运行 Start-Job
命令。 使用 AsJob 参数时,可以使用 ComputerName 或会话参数。
使用 Invoke-Command
运行 Start-Job
命令时,必须在 PSSession 中运行该命令。 如果使用 ComputerName 参数,则 PowerShell 将在作业对象返回时结束连接,并且作业中断。
有关详细信息,请参阅 about_Jobs。
是否可以运行交互式会话?
是的。 若要启动与远程计算机的交互式会话,请使用 Enter-PSSession
cmdlet。 在交互式会话中,键入的命令在远程计算机上运行,就像直接在远程计算机上键入它们一样。
可以在临时会话(通过使用 ComputerName 参数)或 PSSession(通过使用会话参数)中运行交互式会话。 如果使用 PSSession,PSSession 会保留先前命令中的数据,PSSession 会保留交互式会话期间生成的任何数据,以便在后续命令中使用。
结束交互式会话时,PSSession 将保持打开状态,可供使用。
有关详细信息,请参阅 Enter-PSSession 和 Exit-PSSession。
是否必须删除 PSSessions?
是的。 PSSession 是一个进程,它是使用内存和其他资源的自包含环境,即使未使用它也是如此。 完成 PSSession 后,请将其删除。 如果创建多个 PSSession,请关闭不使用的 PSSession,并仅保留当前正在使用的 PSSession。
若要删除 PSSessions,请使用 Remove-PSSession
cmdlet。 它会删除 PSSession,并释放它们使用的所有资源。
还可以使用 的 New-PSSessionOption
参数在指定的时间间隔后关闭空闲 PSSession。 有关详细信息,请参阅 New-PSSessionOption。
如果将 PSSession 对象保存在变量中,然后删除 PSSession 或使其超时,则该变量仍包含 PSSession 对象,但 PSSession 未处于活动状态,不能使用或修复。
所有会话是否和 PSSession 都一样?
不是。 开发人员可以创建自定义会话,这些会话仅包含选定的提供程序和 cmdlet。 如果命令在一个会话中工作,但不在另一个会话中工作,可能是因为会话受到限制。
about_Jobs
about_PSSessions
about_Remote
about_Remote_Disconnected_Sessions
about_Remote_Requirements
Invoke-Command
Enter-PSSession
Exit-PSSession
Get-PSSession
New-PSSession
Remove-PSSession