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

[玩转系统] 获取 PSSession (Microsoft.PowerShell.Core)

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

获取 PSSession (Microsoft.PowerShell.Core)


获取 PSSession

模块 :Microsoft.PowerShell.Core

获取本地和远程计算机上的 PowerShell 会话。

句法

Get-PSSession
   [-Name <String[]>]
   [<CommonParameters>]
Get-PSSession
   [-ComputerName] <String[]>
   [-ApplicationName <String>]
   [-ConfigurationName <String>]
   [-Name <String[]>]
   [-Credential <PSCredential>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [-Port <Int32>]
   [-UseSSL]
   [-ThrottleLimit <Int32>]
   [-State <SessionFilterState>]
   [-SessionOption <PSSessionOption>]
   [<CommonParameters>]
Get-PSSession
   [-ComputerName] <String[]>
   [-ApplicationName <String>]
   [-ConfigurationName <String>]
   -InstanceId <Guid[]>
   [-Credential <PSCredential>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [-Port <Int32>]
   [-UseSSL]
   [-ThrottleLimit <Int32>]
   [-State <SessionFilterState>]
   [-SessionOption <PSSessionOption>]
   [<CommonParameters>]
Get-PSSession
   [-ConnectionUri] <Uri[]>
   [-ConfigurationName <String>]
   [-AllowRedirection]
   [-Name <String[]>]
   [-Credential <PSCredential>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [-ThrottleLimit <Int32>]
   [-State <SessionFilterState>]
   [-SessionOption <PSSessionOption>]
   [<CommonParameters>]
Get-PSSession
   [-ConnectionUri] <Uri[]>
   [-ConfigurationName <String>]
   [-AllowRedirection]
   -InstanceId <Guid[]>
   [-Credential <PSCredential>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [-ThrottleLimit <Int32>]
   [-State <SessionFilterState>]
   [-SessionOption <PSSessionOption>]
   [<CommonParameters>]
Get-PSSession
   [-ConfigurationName <String>]
   -InstanceId <Guid[]>
   [-State <SessionFilterState>]
   -VMName <String[]>
   [<CommonParameters>]
Get-PSSession
   [-ConfigurationName <String>]
   [-Name <String[]>]
   [-State <SessionFilterState>]
   -ContainerId <String[]>
   [<CommonParameters>]
Get-PSSession
   [-ConfigurationName <String>]
   -InstanceId <Guid[]>
   [-State <SessionFilterState>]
   -ContainerId <String[]>
   [<CommonParameters>]
Get-PSSession
   [-ConfigurationName <String>]
   [-Name <String[]>]
   [-State <SessionFilterState>]
   -VMId <Guid[]>
   [<CommonParameters>]
Get-PSSession
   [-ConfigurationName <String>]
   -InstanceId <Guid[]>
   [-State <SessionFilterState>]
   -VMId <Guid[]>
   [<CommonParameters>]
Get-PSSession
   [-ConfigurationName <String>]
   [-Name <String[]>]
   [-State <SessionFilterState>]
   -VMName <String[]>
   [<CommonParameters>]
Get-PSSession
   [-InstanceId <Guid[]>]
   [<CommonParameters>]
Get-PSSession
   [-Id] <Int32[]>
   [<CommonParameters>]

描述

Get-PSSession cmdlet 获取本地和远程计算机上用户管理的 PowerShell 会话 (PSSessions)。

从 Windows PowerShell 3.0 开始,会话存储在每个连接远程端的计算机上。您可以使用 Get-PSSessionComputerNameConnectionUri 参数来获取连接到本地计算机或远程计算机的会话,即使它们不是在当前会话中创建的。

如果没有参数,Get-PSSession 会获取当前会话中创建的所有会话。

使用过滤参数,包括NameIDInstanceIDStateApplicationNameConfigurationNameGet-PSSession 返回的会话中进行选择。

使用其余参数配置临时连接,当您使用 ComputerNameConnectionUri 参数时,Get-PSSession 命令将在该连接中运行。

笔记

在 Windows PowerShell 2.0 中,如果不带参数,Get-PSSession 会获取当前会话中创建的所有会话。 ComputerName 参数获取在当前会话中创建并连接到指定计算机的会话。

有关 PowerShell 会话的更多信息,请参阅 about_PSSessions。

示例

示例1:获取当前会话中创建的会话

Get-PSSession

此命令获取当前会话中创建的所有 PSSession。它不会获取在其他会话或其他计算机上创建的 PSSession,即使它们连接到此计算机也是如此。

示例2:获取连接到本地计算机的会话

Get-PSSession -ComputerName "localhost"

此命令获取连接到本地计算机的PSSession。要指示本地计算机,请键入计算机名称、localhost 或点 (.)

该命令返回本地计算机上的所有会话,即使它们是在不同会话中或在不同计算机上创建的。

示例 3:获取连接到计算机的会话

Get-PSSession -ComputerName "Server02"

Id Name            ComputerName    State         ConfigurationName     Availability
 -- ----            ------------    -----         -----------------     ------------
  2 Session3        Server02       Disconnected  ITTasks                       Busy
  1 ScheduledJobs   Server02       Opened        Microsoft.PowerShell     Available
  3 Test            Server02       Disconnected  Microsoft.PowerShell          Busy

此命令获取连接到 Server02 计算机的 PSSession

该命令返回 Server02 上的所有会话,即使它们是在不同会话中或在不同计算机上创建的。

输出显示其中两个会话具有 Disconnected 状态和 Busy 可用性。它们是在不同的会话中创建的并且当前正在使用中。 ScheduledJobs 会话是在当前会话中创建的,该会话处于 OpenedAvailable 状态。

示例 4:保存该命令的结果

New-PSSession -ComputerName Server01, Server02, Server03
$s1, $s2, $s3 = Get-PSSession

此示例演示如何将 Get-PSSession 命令的结果保存在多个变量中。

第一个命令使用 New-PSSession cmdlet 在三台远程计算机上创建 PSSession

第二个命令使用 Get-PSSession cmdlet 获取三个 PSSession。然后,它将每个 PSSession 保存在单独的变量中。

当 PowerShell 将对象数组分配给变量数组时,它会将第一个对象分配给第一个变量,将第二个对象分配给第二个变量,依此类推。如果对象多于变量,它将所有剩余对象分配给数组中的最后一个变量。如果变量多于对象,则不使用多余的变量。

示例5:通过实例ID删除会话

Get-PSSession | Format-Table -Property ComputerName, InstanceID
$s = Get-PSSession -InstanceID a786be29-a6bb-40da-80fb-782c67f7db0f
Remove-PSSession -Session $s

此示例演示如何使用实例 ID 获取 PSSession,然后删除 PSSession

第一个命令获取当前会话中创建的所有 PSSession。它将 PSSessions 发送到 Format-Table cmdlet,后者显示每个 ComputerNameInstanceID 属性>PS会话。

第二个命令使用 Get-PSSession cmdlet 获取特定的 PSSession 并将其保存在 $s 变量中。该命令使用 InstanceID 参数来标识 PSSession

第三条命令使用Remove-PSSession cmdlet 删除$s 变量中的PSSession

示例 6:获取具有特定名称的会话

本示例中的命令查找具有特定名称格式并使用特定会话配置的会话,然后连接到该会话。您可以使用这样的命令来查找同事启动任务的会话并连接以完成该任务。

Get-PSSession -ComputerName Server02, Server12 -Name BackupJob* -ConfigurationName ITTasks -SessionOption @{OperationTimeout=240000}

Id Name            ComputerName    State         ConfigurationName     Availability
 -- ----            ------------    -----         -----------------     ------------
  3 BackupJob04     Server02        Disconnected        ITTasks                  None

$s = Get-PSSession -ComputerName Server02 -Name BackupJob04 -ConfigurationName ITTasks | Connect-PSSession
$s

Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 5 BackupJob04     Server02        Opened        ITTasks                  Available

第一个命令获取 Server02 和 Server12 远程计算机上的会话,这些计算机的名称以 BackupJob 开头,并使用 ITTasks 会话配置。该命令使用 Name 参数指定名称模式,ConfigurationName 参数指定会话配置。 SessionOption 参数的值是一个哈希表,它将 OperationTimeout 的值设置为 240000 毫秒(4 分钟)。此设置使命令有更多的时间来完成。ConfigurationNameSessionOption 参数用于配置 Get-PSSession cmdlet 所在的临时会话在每台计算机上运行。输出显示该命令返回 BackupJob04 会话。会话已断开连接,并且 AvailabilityNone,这表明该会话未在使用中。

第二个命令使用 Get-PSSession cmdlet 访问 BackupJob04 会话,并使用 Connect-PSSession cmdlet 连接到该会话。该命令将会话保存在 $s 变量中。

第三个命令获取 $s 变量中的会话。输出显示 Connect-PSSession 命令已成功。会话处于已打开状态并且可供使用。

示例 7:使用会话 ID 获取会话

Get-PSSession -Id 2

此命令获取 ID 为 2PSSession。由于ID属性的值仅在当前会话中唯一,因此Id参数仅对本地命令有效。

参数

-AllowRedirection

指示此 cmdlet 允许将此连接重定向到备用统一资源标识符 (URI)。默认情况下,PowerShell 不重定向连接。

此参数配置为运行带有 ConnectionUri 参数的 Get-PSSession 命令而创建的临时连接。

此参数是在 Windows PowerShell 3.0 中引入的。

类型 :

SwitchParameter

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

-ApplicationName

指定应用程序的名称。此 cmdlet 仅连接到使用指定应用程序的会话。

输入连接 URI 的应用程序名称段。例如,在以下连接 URI 中,应用程序名称为 WSMan:http://localhost:5985/WSMAN。会话的应用程序名称存储在会话的 Runspace.ConnectionInfo.AppName 属性中。

该参数的值用于选择和过滤会话。它不会更改会话使用的应用程序。

类型 :

String

位置:

命名

默认值:

所有会议

必需的:

False

接受管道输入:

True

接受通配符:

False

-Authentication

指定用于验证运行 Get-PSSession 命令的会话的凭据的机制。

此参数配置为运行带有 ComputerNameConnectionUri 参数的 Get-PSSession 命令而创建的临时连接。

该参数可接受的值为:

    Default
    Basic
    CredSSP
    Digest
    Kerberos
    Negotiate
  • 与隐式凭证协商
  • 默认值为默认

    有关此参数值的更多信息,请参阅 AuthenticationMechanism 枚举。

    警告

    凭据安全支持提供程序 (CredSSP) 身份验证将用户的凭据传递到远程计算机进行身份验证,专为需要对多个资源进行身份验证的命令(例如访问远程网络共享)而设计。这种机制增加了远程操作的安全风险。如果远程计算机受到威胁,则传递给它的凭据可用于控制网络会话。

    此参数是在 Windows PowerShell 3.0 中引入的。

    类型 :

    AuthenticationMechanism

    接受的值:

    默认、基本、协商、NegotiateWithImplicitCredential、Credssp、摘要、Kerberos

    位置:

    命名

    默认值:

    默认

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    -CertificateThumbprint

    指定有权创建运行 Get-PSSession 命令的会话的用户帐户的数字公钥证书 (X509)。输入证书的证书指纹。

    此参数配置为运行带有 ComputerNameConnectionUri 参数的 Get-PSSession 命令而创建的临时连接。

    证书用于基于客户端证书的身份验证。它们只能映射到本地用户帐户;它们不适用于域帐户。

    要获取证书指纹,请在 PowerShell Cert: 驱动器中使用 Get-ItemGet-ChildItem 命令。

    此参数是在 Windows PowerShell 3.0 中引入的。

    类型 :

    String

    位置:

    命名

    默认值:

    None

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    -ComputerName

    指定计算机名称的数组。获取连接到指定计算机的会话。不允许使用通配符。没有默认值。

    从 Windows PowerShell 3.0 开始,PSSession 对象存储在每个连接远程端的计算机上。为了获取指定计算机上的会话,PowerShell 会创建与每台计算机的临时连接并运行 Get-PSSession 命令。

    键入一台或多台计算机的 NetBIOS 名称、IP 地址或完全限定域名。要指定本地计算机,请键入计算机名称、localhost 或点 (.)。

    笔记

    此参数仅从运行 Windows PowerShell 3.0 或更高版本的 PowerShell 的计算机获取会话。早期版本不存储会话。

    类型 :

    String[]

    别名:

    Cn

    位置:

    0

    默认值:

    None

    必需的:

    True

    接受管道输入:

    True

    接受通配符:

    False

    -ConfigurationName

    指定配置的名称。此 cmdlet 仅获取使用指定会话配置的会话。

    输入会话配置的配置名称或完全限定的资源 URI。如果仅指定配置名称,则会在前面添加以下架构 URI:http://schemas.microsoft.com/powershell。会话的配置名称存储在会话的 ConfigurationName 属性中。

    该参数的值用于选择和过滤会话。它不会更改会话使用的会话配置。

    有关会话配置的更多信息,请参阅 about_Session_Configurations。

    类型 :

    String

    位置:

    命名

    默认值:

    所有会议

    必需的:

    False

    接受管道输入:

    True

    接受通配符:

    False

    -ConnectionUri

    指定一个 URI,该 URI 定义运行 Get-PSSession 命令的临时会话的连接端点。 URI 必须是完全限定的。

    此参数配置为运行带有 ConnectionUri 参数的 Get-PSSession 命令而创建的临时连接。

    该字符串的格式为:

    <Transport>://<ComputerName>:<Port\>/<ApplicationName>

    默认值为:http://localhost:5985/WSMAN

    如果不指定 ConnectionUri,则可以使用 UseSSLComputerNamePort ApplicationName 参数来指定 ConnectionURI 值。 URI 传输段的有效值为 HTTP 和 HTTPS。如果您指定带有传输段的连接 URI,但未指定端口,则会使用标准端口创建会话:80(对于 HTTP)和 443(对于 HTTPS)。要使用 PowerShell 远程处理的默认端口,请为 HTTP 指定端口 5985 或为 HTTPS 指定端口 5986

    如果目标计算机将连接重定向到其他 URI,PowerShell 将阻止重定向,除非您在命令中使用 AllowRedirection 参数。

    此参数是在 Windows PowerShell 3.0 中引入的。

    此参数仅从运行 Windows PowerShell 3.0 或更高版本的 Windows PowerShell 的计算机获取会话。早期版本不存储会话。

    类型 :

    乌里[]

    别名:

    URI, CU

    位置:

    0

    默认值:

    http://localhost:5985/WSMAN

    必需的:

    True

    接受管道输入:

    True

    接受通配符:

    False

    -ContainerId

    指定容器 ID 的数组。此 cmdlet 启动与每个指定容器的交互式会话。使用 docker ps 命令获取容器 ID 列表。有关更多信息,请参阅 docker ps 命令的帮助。

    类型 :

    String[]

    位置:

    命名

    默认值:

    None

    必需的:

    True

    接受管道输入:

    True

    接受通配符:

    False

    -Credential

    指定用户凭证。此 cmdlet 使用指定用户的权限运行命令。指定有权连接到远程计算机并运行 Get-PSSession 命令的用户帐户。默认为当前用户。

    输入用户名,例如 User01Domain01\User01,或输入由 Get-Credential 生成的 PSCredential 对象代码> cmdlet。如果您键入用户名,系统会提示您输入密码。

    凭证存储在 PSCredential 对象中,密码存储为 SecureString。

    笔记

    有关 SecureString 数据保护的更多信息,请参阅 SecureString 的安全性如何?。

    此参数配置为运行带有 ComputerNameConnectionUri 参数的 Get-PSSession 命令而创建的临时连接。

    此参数是在 Windows PowerShell 3.0 中引入的。

    类型 :

    PS凭证

    位置:

    命名

    默认值:

    当前用户

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    -Id

    指定会话 ID 的数组。此 cmdlet 仅获取具有指定 ID 的会话。键入一个或多个 ID(以逗号分隔),或使用范围运算符 (..) 指定 ID 范围。您不能将 ID 参数与 ComputerName 参数一起使用。

    ID 是一个整数,唯一标识当前会话中用户管理的会话。它比 InstanceId 更容易记住和输入,但它仅在当前会话中是唯一的。会话的 ID 存储在会话的 ID 属性中。

    类型 :

    Int32[]

    位置:

    0

    默认值:

    所有会议

    必需的:

    True

    接受管道输入:

    True

    接受通配符:

    False

    -InstanceId

    指定会话的实例 ID 数组。此 cmdlet 仅获取具有指定实例 ID 的会话。

    实例 ID 是唯一标识本地或远程计算机上的会话的 GUID。即使您在 PowerShell 中运行多个会话,InstanceID 也是唯一的。

    会话的实例 ID 存储在会话的 InstanceID 属性中。

    类型 :

    指导[]

    位置:

    命名

    默认值:

    所有会议

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    -Name

    指定会话名称的数组。此 cmdlet 仅获取具有指定友好名称的会话。允许使用通配符。

    会话的友好名称存储在会话的 Name 属性中。

    类型 :

    String[]

    位置:

    命名

    默认值:

    所有会议

    必需的:

    False

    接受管道输入:

    True

    接受通配符:

    True

    -Port

    指定用于运行 Get-PSSession 命令的临时连接的指定网络端口。要连接到远程计算机,远程计算机必须侦听连接使用的端口。默认端口为 5985(HTTP 的 WinRM 端口)和 5986(HTTPS 的 WinRM 端口)。

    在使用备用端口之前,必须将远程计算机上的 WinRM 侦听器配置为侦听该端口。要配置侦听器,请在 PowerShell 提示符下键入以下两个命令:

    Remove-Item -Path WSMan:\Localhost\listener\listener* -Recurse
    New-Item -Path WSMan:\Localhost\listener -Transport http -Address * -Port \<port-number\>

    此参数配置为运行带有 ComputerNameConnectionUri 参数的 Get-PSSession 命令而创建的临时连接。

    除非必须,否则不要使用端口参数。命令中设置的端口适用于运行该命令的所有计算机或会话。备用端口设置可能会阻止该命令在所有计算机上运行。

    此参数是在 Windows PowerShell 3.0 中引入的。

    类型 :

    整数32

    位置:

    命名

    默认值:

    5985, 5986

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    -SessionOption

    指定会话的高级选项。输入 SessionOption 对象,例如使用 New-PSSessionOption cmdlet 创建的对象,或者一个哈希表,其中键是会话选项名称,值是会话选项值。

    选项的默认值由 $PSSessionOption 首选项变量(如果已设置)的值确定。否则,默认值由会话配置中设置的选项建立。

    会话选项值优先于 $PSSessionOption 首选项变量和会话配置中设置的会话默认值。但是,它们并不优先于会话配置中设置的最大值、配额或限制。

    有关会话选项(包括默认值)的说明,请参阅New-PSSessionOption。有关 $PSSessionOption 首选项变量的信息,请参阅 about_Preference_Variables。有关会话配置的更多信息,请参阅 about_Session_Configurations。

    类型 :

    PS会话选项

    位置:

    命名

    默认值:

    None

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    -State

    指定会话状态。此 cmdlet 仅获取指定状态的会话。此参数可接受的值为:AllOpenedDisconnectedClosedBroken。默认值为全部

    会话状态值与当前会话相关。不是在当前会话中创建且未连接到当前会话的会话即使连接到不同的会话,也具有 Disconnected 状态。

    会话的状态存储在会话的 State 属性中。

    此参数是在 Windows PowerShell 3.0 中引入的。

    类型 :

    会话过滤状态

    接受的值:

    全部、打开、断开、关闭、损坏

    位置:

    命名

    默认值:

    全部

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    -ThrottleLimit

    指定为运行 Get-PSSession 命令而可以建立的最大并发连接数。如果省略此参数或输入值 0(零),则使用默认值 32。限制仅适用于当前命令,不适用于会话或计算机。

    此参数是在 Windows PowerShell 3.0 中引入的。

    类型 :

    整数32

    位置:

    命名

    默认值:

    32

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    -UseSSL

    指示此 cmdlet 使用安全套接字层 (SSL) 协议建立运行 Get-PSSession 命令的连接。默认情况下,不使用 SSL。如果使用此参数,但 SSL 在用于该命令的端口上不可用,则该命令将失败。

    此参数配置为运行带有 ComputerName 参数的 Get-PSSession 命令而创建的临时连接。

    此参数是在 Windows PowerShell 3.0 中引入的。

    类型 :

    SwitchParameter

    位置:

    命名

    默认值:

    False

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    -VMId

    指定虚拟机 ID 的数组。此 cmdlet 启动与每个指定虚拟机的交互式会话。要查看可用的虚拟机,请使用以下命令:

    Get-VM | Select-Object -Property Name, ID
    类型 :

    指导[]

    别名:

    VMGuid

    位置:

    命名

    默认值:

    None

    必需的:

    True

    接受管道输入:

    True

    接受通配符:

    False

    -VMName

    指定虚拟机名称的数组。此 cmdlet 启动与每个指定虚拟机的交互式会话。要查看可用的虚拟机,请使用 Get-VM cmdlet。

    类型 :

    String[]

    位置:

    命名

    默认值:

    None

    必需的:

    True

    接受管道输入:

    True

    接受通配符:

    False

    输入

    您无法通过管道将对象传递到此 cmdlet。

    输出

    PS会话

    笔记

    PowerShell 包含 Get-PSSession 的以下别名:

    • 所有平台:

        gsn
    • 此 cmdlet 获取用户管理的会话PSSession对象”,例如使用New-PSSessionEnter-PSSessionInvoke-Command cmdlet。它不会获取启动 PowerShell 时创建的系统管理会话。

    • 从 Windows PowerShell 3.0 开始,PSSession 对象存储在服务器端或连接接收端的计算机上。为了获取存储在本地计算机或远程计算机上的会话,PowerShell 会与指定计算机建立临时会话,并在会话中运行查询命令。

    • 要获取连接到远程计算机的会话,请使用 ComputerNameConnectionUri 参数指定远程计算机。要筛选 Get-PSSession 获取的会话,请使用名称IDInstanceID状态参数。使用其余参数配置 Get-PSSession 使用的临时会话。

    • 当您使用 ComputerNameConnectionUri 参数时,Get-PSSession 仅从运行 Windows PowerShell 3.0 及更高版本的 PowerShell 的计算机获取会话。

    • PSSessionState 属性值与当前会话相关。因此,值 Disconnected 表示 PSSession 未连接到当前会话。但是,这并不意味着 PSSession 与所有会话断开连接。它可能连接到不同的会话。要确定是否可以从当前会话连接或重新连接到 PSSession,请使用 Availability 属性。

    • 可用性表示您可以连接到会话。 Busy 值表示您无法连接到 PSSession,因为它已连接到另一个会话。

      有关会话的 State 属性值的详细信息,请参阅 RunspaceState 枚举。

      有关会话的 Availability 属性值的详细信息,请参阅 RunspaceAvailability 枚举。

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

      取消回复欢迎 发表评论:

      关灯