当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 关于 PSSessions

作者:精品下载站 日期:2024-12-14 02:19:45 浏览:14 分类:玩电脑

关于 PSSessions


简短描述

描述 PowerShell 会话 (PSSessions) 并说明如何建立与远程计算机的持久连接。

详细描述

要在远程计算机上运行 PowerShell 命令,可以使用 cmdlet 的 ComputerName 参数,也可以创建 PowerShell 会话 (PSSession) 并在 PSSession 中运行命令。

创建 PSSession 时,PowerShell 会建立与远程计算机的持久连接。使用 PSSession 在远程计算机上运行一系列相关命令。在同一 PSSession 中运行的命令可以共享数据,例如变量、别名和函数的值。

您还可以在本地计算机上创建 PSSession 并在其中运行命令。本地 PSSession 使用 PowerShell 远程处理基础结构来创建和维护 PSSession。

从 Windows PowerShell 3.0 开始,Windows 上的 PSSession 独立于创建它们的会话。活动 PSSession 在远程计算机(或连接的远程端或“服务器端”的计算机)上维护。因此,在 Windows 上,您可以从远程 Windows 计算机上的 PSSession 断开连接,并稍后从同一台计算机或不同的 Windows 计算机重新连接。

本主题介绍如何创建、使用、获取和删除 PSSession。有关更多高级信息,请参阅 about_PSSession_Details。

注意:PSSession 使用 PowerShell 远程处理基础设施。要使用 PSSession,必须将本地和远程计算机配置为远程处理。有关详细信息,请参阅 about_Remote_Requirements。

在 Windows Vista 和更高版本的 Windows 中,要在本地计算机上创建 PSSession,必须使用“以管理员身份运行”选项启动 PowerShell。

什么是会话?

会话是 PowerShell 运行的环境。

每次启动 PowerShell 时,都会为您创建一个会话,您可以在该会话中运行命令。您还可以向会话添加项目(例如模块和管理单元),并且可以创建项目(例如变量、函数和别名)。这些项目仅存在于会话中,并在会话结束时被删除。

您还可以在本地计算机或远程计算机上创建用户管理的会话,称为“PowerShell 会话”或“PSSession”。与默认会话一样,您可以在 PSSession 中运行命令并添加和创建项目。但是,与自动启动的会话不同,您可以控制您创建的 PSSession。您可以获取、创建、配置和删除它们、断开连接并重新连接它们,以及在同一个 PSSession 中运行多个命令。 PSSession 一直可用,直到您将其删除或超时为止。

通常,您创建 PSSession 来在远程计算机上运行一系列相关命令。当您在远程计算机上创建 PSSession 时,PowerShell 会与远程计算机建立持久连接以支持该会话。

如果您使用 Invoke-CommandEnter-PSSession cmdlet 的 ComputerName 参数来运行远程命令或启动交互式会话,PowerShell在远程计算机上创建临时会话,并在命令完成或交互式会话结束后立即关闭会话。您无法控制这些临时会话,也不能将它们用于多个命令或单个交互式会话。

在 PowerShell 中,“当前会话”是您正在使用的会话。“当前会话”可以指任何会话,包括临时会话或 PSSession。

为什么使用 PSSession?

当您需要与远程计算机的持久连接时,请使用 PSSession。通过 PSSession,您可以运行一系列共享数据的命令,例如变量的值、函数的内容或别名的定义。

您可以运行远程命令,而无需创建 PSSession。使用启用远程的 cmdlet 的 ComputerName 参数在一台或多台计算机上运行单个命令或一系列不相关的命令。

当您使用 Invoke-CommandEnter-PSSessionComputerName 参数时,PowerShell 会与远程计算机建立临时连接,然后关闭该连接命令完成后。连接关闭时,您创建的任何数据元素都会丢失。

其他具有 ComputerName 参数的 cmdlet(例如 Get-EventlogGet-WmiObject)使用不同的远程处理技术来收集数据。没有一个像 PSSession 那样创建持久连接。

如何创建 PSSession

要创建 PSSession,请使用 New-PSSession cmdlet。要在远程计算机上创建 PSSession,请使用 New-PSSession cmdlet 的 ComputerName 参数。

例如,以下命令在 Server01 计算机上创建一个新的 PSSession。

New-PSSession -ComputerName Server01

当您提交命令时,New-PSSession 将创建 PSSession 并返回表示 PSSession 的对象。您可以在创建 PSSession 时将该对象保存在变量中,也可以稍后使用 Get-PSSession 命令获取 PSSession。

例如,以下命令在 Server01 计算机上创建一个新的 PSSession 并将生成的对象保存在 $ps 变量中。

$ps = New-PSSession -ComputerName Server01

如何在多台计算机上创建 PSSession

要在多台计算机上创建 PSSession,请使用 New-PSSession cmdlet 的 ComputerName 参数。在以逗号分隔的列表中键入远程计算机的名称。

例如,要在 Server01、Server02 和 Server03 计算机上创建 PSSession,请键入:

New-PSSession -ComputerName Server01, Server02, Server03

New-PSSession 在每台远程计算机上创建一个 PSSession。

如何获取 PSSession

要获取在当前会话中创建的 PSSession,请使用不带 ComputerName 参数的 Get-PSSession cmdlet。 Get-PSSession 返回的对象类型与 New-PSSession 返回的对象类型相同。

以下命令获取当前会话中创建的所有 PSSession。

Get-PSSession

PSSession 的默认显示显示其 ID 和默认显示名称。您可以在创建会话时指定备用显示名称。

Id   Name       ComputerName    State    ConfigurationName
---  ----       ------------    -----    ---------------------
1    Session1   Server01        Opened   Microsoft.PowerShell
2    Session2   Server02        Opened   Microsoft.PowerShell
3    Session3   Server03        Opened   Microsoft.PowerShell

您还可以将 PSSession 保存在变量中。以下命令获取 PSSession 并将其保存在 $ps123 变量中。

$ps123 = Get-PSSession

使用 PSSession cmdlet 时,您可以通过 ID、名称或实例 ID(GUID)引用 PSSession。以下命令通过 ID 获取 PSSession 并将其保存在 $ps01 变量中。

$ps01 = Get-PSSession -Id 1

从 Windows PowerShell 3.0 开始,PSSession 在远程计算机上维护。要获取您在特定远程计算机上创建的 PSSession,请使用 Get-PSSession cmdlet 的 ComputerName 参数。以下命令获取您在 Server01 远程计算机上创建的 PSSession。这包括在当前会话以及本地计算机或其他计算机上的其他会话中创建的 PSSession。

Get-PSSession -ComputerName Server01

在 Windows PowerShell 2.0 中,Get-PSSession 仅获取在当前会话中创建的 PSSession。它不会获取在其他会话或其他计算机上创建的 PSSession,即使会话已连接到本地计算机并正在本地计算机上运行命令。

如何在 PSSession 中运行命令

要在一个或多个 PSSession 中运行命令,请使用 Invoke-Command cmdlet。使用 Session 参数指定 PSSession,使用 ScriptBlock 参数指定命令。

例如,要在 $ps123 变量中保存的三个 PSSession 中的每一个中运行 Get-ChildItem ("dir") 命令,请键入:

Invoke-Command -Session $ps123 -ScriptBlock { Get-ChildItem }

如何删除 PSSession

完成 PSSession 后,使用 Remove-PSSession cmdlet 删除 PSSession 并释放其正在使用的资源。

Remove-PSSession -Session $ps

或者

Remove-PSSession -Id 1

要从远程计算机中删除 PSSession,请使用 Remove-PSSession cmdlet 的 ComputerName 参数。

Remove-PSSession -ComputerName Server01 -Id 1

如果您不删除 PSSession,则 PSSession 仍可供使用,直到超时。

您还可以使用 New-PSSessionOption cmdlet 的 IdleTimeout 参数来设置空闲 PSSession 的过期时间。有关详细信息,请参阅New-PSSessionOption。

PSSession Cmdlet

有关 PSSession cmdlet 的列表,请键入:

Get-Help *-PSSession
  • Connect-PSSession:将 PSSession 连接到当前会话
  • Disconnect-PSSession:断开 PSSession 与当前会话的连接
  • Enter-PSSession:启动交互式会话
  • Exit-PSSession:结束交互式会话
  • Get-PSSession:获取当前会话中的 PSSession
  • New-PSSession:在本地或远程计算机上创建新的 PSSession
  • Receive-PSSession:获取在断开连接的会话中运行的命令的结果
  • Remove-PSSession:删除当前会话中的 PSSession

笔记

仅 Windows 支持断开连接的会话。 Connect-PSSessionDisconnect-PSSessionReceive-PSSession cmdlet 仅在 Windows 上可用。有关断开连接的会话的更多信息,请参阅 about_Remote_Disconnected_Session

欲了解更多信息

有关 PSSession 的更多信息,请参阅 about_PSSession_Details。

参见

  • about_Remote
  • about_Remote_Disconnected_Sessions
  • about_Remote_Requirements
  • Invoke-Command
  • 连接-PSSession
  • 断开连接-PSSession
  • 输入-PSSession
  • 退出-PSSession
  • 获取 PSSession
  • 新 PS 会话
  • 删除-PSSession

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯