[玩转系统] 接收 PSSession (Microsoft.PowerShell.Core)
作者:精品下载站 日期:2024-12-14 02:14:42 浏览:12 分类:玩电脑
接收 PSSession (Microsoft.PowerShell.Core)
接收PS会话
模块 :Microsoft.PowerShell.Core获取断开连接的会话中的命令结果
句法
Receive-PSSession
[-Session] <PSSession>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
[-Id] <Int32>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
[-ComputerName] <String>
[-ApplicationName <String>]
[-ConfigurationName <String>]
-Name <String>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-Port <Int32>]
[-UseSSL]
[-SessionOption <PSSessionOption>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
[-ComputerName] <String>
[-ApplicationName <String>]
[-ConfigurationName <String>]
-InstanceId <Guid>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-Port <Int32>]
[-UseSSL]
[-SessionOption <PSSessionOption>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
[-ConfigurationName <String>]
[-ConnectionUri] <Uri>
[-AllowRedirection]
-Name <String>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-SessionOption <PSSessionOption>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
[-ConfigurationName <String>]
[-ConnectionUri] <Uri>
[-AllowRedirection]
-InstanceId <Guid>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-SessionOption <PSSessionOption>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
-InstanceId <Guid>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
-Name <String>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
描述
此 cmdlet 仅适用于 Windows 平台。
Receive-PSSession
cmdlet 获取在已断开连接的 PowerShell 会话 (PSSession) 中运行的命令的结果。如果会话当前已连接,Receive-PSSession
会获取会话断开连接时正在运行的命令的结果。如果会话仍然断开连接,Receive-PSSession
将连接到会话、恢复所有暂停的命令,并获取会话中运行的命令的结果。
此 cmdlet 是在 PowerShell 3.0 中引入的。
除了 Connect-PSSession
命令之外,您还可以使用 Receive-PSSession
或代替 Connect-PSSession
命令。 Receive-PSSession
可以连接到在其他会话或其他计算机上启动的任何断开连接或重新连接的会话。
Receive-PSSession
适用于使用 Disconnect-PSSession
cmdlet 或 Invoke-Command
故意断开连接的 PSSession InDisconnectedSession 参数。或者因网络中断而意外断开。
如果您使用 Receive-PSSession
cmdlet 连接到没有命令正在运行或挂起的会话,则 Receive-PSSession
将连接到该会话,但不会返回任何输出或错误。
有关“断开连接的会话”功能的更多信息,请参阅 about_Remote_Disconnected_Sessions。
一些示例使用展开来减少行长度并提高可读性。有关详细信息,请参阅 about_Splatting。
示例
示例 1:连接到 PSSession
此示例连接到远程计算机上的会话并获取会话中运行的命令的结果。
Receive-PSSession -ComputerName Server01 -Name ITTask
Receive-PSSession
使用ComputerName 参数指定远程计算机。 Name 参数标识 Server01 计算机上的 ITTask 会话。该示例获取在 ITTask 会话中运行的命令的结果。
由于该命令不使用 OutTarget 参数,因此结果将显示在命令行上。
示例 2:获取断开连接的会话上所有命令的结果
此示例获取两台远程计算机上所有断开连接的会话中运行的所有命令的结果。
如果任何会话未断开连接或未运行命令,Receive-PSSession
不会连接到该会话,也不会返回任何输出或错误。
Get-PSSession -ComputerName Server01, Server02 | Receive-PSSession
Get-PSSession
使用ComputerName 参数指定远程计算机。这些对象沿着管道发送到 Receive-PSSession。
示例 3:获取会话中运行的脚本的结果
此示例使用 Receive-PSSession
cmdlet 获取在远程计算机会话中运行的脚本的结果。
$parms = @{
ComputerName = "Server01"
Name = "ITTask"
OutTarget = "Job"
JobName = "ITTaskJob01"
Credential = "Domain01\Admin01"
}
Receive-PSSession @parms
Id Name State HasMoreData Location
-- ---- ----- ----------- --------
16 ITTaskJob01 Running True Server01
该命令使用 ComputerName 和 Name 参数来标识断开连接的会话。它使用值为 Job 的 OutTarget 参数来指示 Receive-PSSession 将结果作为作业返回。 JobName 参数指定重新连接的会话中作业的名称。 Credential 参数使用域管理员的权限运行 Receive-PSSession
命令。
输出显示 Receive-PSSession 将结果作为当前会话中的作业返回。要获取作业结果,请使用 Receive-Job 命令
示例 4:网络中断后获取结果
此示例使用 Receive-PSSession
cmdlet 在网络中断中断会话连接后获取作业结果。 PowerShell 在接下来的四分钟内每秒自动尝试重新连接会话一次,并且仅当四分钟间隔内的所有尝试都失败时才会放弃该工作。
PS> $s = New-PSSession -ComputerName Server01 -Name AD -ConfigurationName ADEndpoint
PS> $s
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
8 AD Server01 Opened ADEndpoint Available
PS> Invoke-Command -Session $s -FilePath \Server12\Scripts\SharedScripts\New-ADResolve.ps1
Running "New-ADResolve.ps1"
# Network outage
# Restart local computer
# Network access is not re-established within 4 minutes
PS> Get-PSSession -ComputerName Server01
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backup Server01 Disconnected Microsoft.PowerShell None
8 AD Server01 Disconnected ADEndpoint None
PS> Receive-PSSession -ComputerName Server01 -Name AD -OutTarget Job -JobName AD
Job Id Name State HasMoreData Location
-- ---- ----- ----------- --------
16 ADJob Running True Server01
PS> Get-PSSession -ComputerName Server01
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backup Server01 Disconnected Microsoft.PowerShell Busy
8 AD Server01 Opened ADEndpoint Available
New-PSSession
cmdlet 在 Server01 计算机上创建一个会话,并将该会话保存在 $s
变量中。 $s
变量显示State 为Opened,并且Availability 为Available。这些值指示您已连接到会话并且可以在会话中运行命令。
Invoke-Command
cmdlet 在会话中的 $s
变量中运行脚本。该脚本开始运行并返回数据,但发生网络中断,会话中断。用户必须退出会话并重新启动本地计算机。
当计算机重新启动时,用户启动 PowerShell 并运行 Get-PSSession
命令来获取 Server01 计算机上的会话。输出显示 Server01 计算机上仍然存在 AD 会话。 State表示AD会话已断开。 Availability 值为 None,表示会话未连接到任何客户端会话。
Receive-PSSession
cmdlet 重新连接到 AD 会话并获取在会话中运行的脚本的结果。该命令使用 OutTarget 参数请求名为 ADJob 的作业中的结果。该命令返回一个作业对象,输出表明脚本仍在运行。
Get-PSSession
cmdlet 用于检查作业状态。输出确认 Receive-PSSession
cmdlet 已重新连接到 AD 会话,该会话现已打开并可用于命令。并且,脚本恢复执行并正在获取脚本结果。
示例 5:重新连接到断开连接的会话
此示例使用 Receive-PSSession cmdlet 重新连接到故意断开连接的会话,并获取会话中运行的作业的结果。
PS> $parms = @{
InDisconnectedSession = $True
ComputerName = "Server01", "Server02", "Server30"
FilePath = "\Server12\Scripts\SharedScripts\Get-BugStatus.ps1"
Name = "BugStatus"
SessionOption = @{IdleTimeout = 86400000}
ConfigurationName = "ITTasks"
}
PS> Invoke-Command @parms
PS> Exit
PS> $s = Get-PSSession -ComputerName Server01, Server02, Server30 -Name BugStatus
PS> $s
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Disconnected ITTasks None
8 ITTask Server02 Disconnected ITTasks None
2 ITTask Server30 Disconnected ITTasks None
PS> $Results = Receive-PSSession -Session $s
PS> $s
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Opened ITTasks Available
8 ITTask Server02 Opened ITTasks Available
2 ITTask Server30 Opened ITTasks Available
PS> $Results
Bug Report - Domain 01
----------------------
ComputerName BugCount LastUpdated
-------------- --------- ------------
Server01 121 Friday, December 30, 2011 5:03:34 PM
Invoke-Command
cmdlet 在三台远程计算机上运行脚本。由于脚本从多个数据库收集和汇总数据,因此脚本通常需要较长时间才能完成。该命令使用 InDisconnectedSession 参数启动脚本,然后立即断开会话。 SessionOption 参数扩展了断开连接的会话的IdleTimeout 值。断开连接的会话从断开连接那一刻起就被视为空闲。将空闲超时设置得足够长非常重要,以便命令可以完成并且您可以重新连接到会话。您只能在创建 PSSession 时设置 IdleTimeout,并且只有在断开连接时才能更改它。当您连接到 PSSession 或接收其结果时,您无法更改 IdleTimeout 值。运行命令后,用户退出 PowerShell 并关闭计算机。
第二天,用户恢复 Windows,启动 PowerShell,并使用 Get-PSSession
获取运行脚本的会话。该命令通过计算机名称、会话名称和会话配置名称来标识会话,并将会话保存在 $s
变量中。将显示 $s
变量的值,并显示会话已断开连接,但并不繁忙。
Receive-PSSession
cmdlet 连接到 $s
变量中的会话并获取其结果。该命令将结果保存在 $Results
变量中。将显示 $s
变量,并表明会话已连接并且可用于命令。
$Results
变量中的脚本结果显示在 PowerShell 控制台中。如果任何结果是意外的,用户可以在会话中运行命令来调查根本原因。
示例 6:在断开连接的会话中运行作业
此示例显示在断开连接的会话中运行的作业会发生什么情况。
PS> $s = New-PSSession -ComputerName Server01 -Name Test
PS> $j = Invoke-Command -Session $s { 1..1500 | Foreach-Object {"Return $_"; sleep 30}} -AsJob
PS> $j
Id Name State HasMoreData Location
-- ---- ----- ----------- --------
16 Job1 Running True Server01
PS> $s | Disconnect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Test Server01 Disconnected Microsoft.PowerShell None
PS> $j
Id Name State HasMoreData Location
-- ---- ----- ----------- --------
16 Job1 Disconnected True Server01
PS> Receive-Job $j -Keep
Return 1
Return 2
PS> $s2 = Connect-PSSession -ComputerName Server01 -Name Test
PS> $j2 = Receive-PSSession -ComputerName Server01 -Name Test
PS> Receive-Job $j
Return 3
Return 4
New-PSSession
cmdlet 在 Server01 计算机上创建测试会话。该命令将会话保存在 $s
变量中。
Invoke-Command
cmdlet 在会话中的 $s
变量中运行命令。该命令使用 AsJob 参数将该命令作为作业运行,并在当前会话中创建作业对象。该命令返回保存在 $j
变量中的作业对象。 $j
变量显示作业对象。
$s
变量中的会话对象沿着管道发送到 Disconnect-PSSession
,并且会话将断开连接。
将显示 $j
变量,并显示在 $j
变量中断开作业对象的效果。作业状态现在已断开。
Receive-Job
在 $j
变量中的作业上运行。输出显示作业在会话和作业断开连接之前开始返回输出。
Connect-PSSession
cmdlet 在同一客户端会话中运行。该命令重新连接到 Server01 计算机上的测试会话,并将该会话保存在 $s2
变量中。
Receive-PSSession
cmdlet 获取会话中运行的作业的结果。由于该命令在同一会话中运行,因此 Receive-PSSession 默认情况下将结果作为作业返回,并重用相同的作业对象。该命令将作业保存在 $j2
变量中。 Receive-Job
cmdlet 获取 $j
变量中的作业结果。
参数
-AllowRedirection
指示此 cmdlet 允许将此连接重定向到备用统一资源标识符 (URI)。
当您使用 ConnectionURI 参数时,远程目标可以返回重定向到不同 URI 的指令。默认情况下,PowerShell 不会重定向连接,但您可以使用此参数启用它重定向连接。
您还可以通过更改 MaximumConnectionRedirectionCount 会话选项值来限制连接重定向的次数。使用 New-PSSessionOption
cmdlet 的 MaximumRedirection 参数或设置 $PSSessionOption
首选项变量的 MaximumConnectionRedirectionCount 属性。默认值为 5。
SwitchParameter
位置:命名
默认值:False
必需的:False
接受管道输入:False
接受通配符:False
-ApplicationName
指定一个应用程序。此 cmdlet 仅连接到使用指定应用程序的会话。
输入连接 URI 的应用程序名称段。例如,在以下连接 URI 中,WSMan 是应用程序名称:http://localhost:5985/WSMAN
。
会话的应用程序名称存储在会话的 Runspace.ConnectionInfo.AppName 属性中。
该参数的值用于选择和过滤会话。它不会更改会话使用的应用程序。
类型 :String
位置:命名
默认值:None
必需的:False
接受管道输入:True
接受通配符:False
-Authentication
指定用于在重新连接到断开连接的会话的命令中验证用户凭据的机制。该参数可接受的值为:
- 默认
- 基本的
- 信用证
- 消化
- 克伯罗斯
- 谈判
- 使用隐式凭证进行协商
默认值为默认。
有关此参数值的更多信息,请参阅 AuthenticationMechanism 枚举。
警告
凭据安全支持提供程序 (CredSSP) 身份验证将用户凭据传递到远程计算机进行身份验证,专为需要对多个资源进行身份验证的命令(例如访问远程网络共享)而设计。这种机制增加了远程操作的安全风险。如果远程计算机受到威胁,则传递给它的凭据可用于控制网络会话。
类型 :AuthenticationMechanism
接受的值:默认、基本、协商、NegotiateWithImplicitCredential、Credssp、摘要、Kerberos
位置:命名
默认值:默认
必需的:False
接受管道输入:False
接受通配符:False
-CertificateThumbprint
指定有权连接到已断开连接的会话的用户帐户的数字公钥证书 (X509)。输入证书的证书指纹。
证书用于基于客户端证书的身份验证。证书只能映射到本地用户帐户,不能与域帐户一起使用。
要获取证书指纹,请在 PowerShell Cert:
驱动器中使用 Get-Item
或 Get-ChildItem
命令。
String
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-ComputerName
指定存储断开连接的会话的计算机。会话存储在服务器端或连接接收端的计算机上。默认为本地计算机。
键入一台计算机的 NetBIOS 名称、IP 地址或完全限定域名 (FQDN)。不允许使用通配符。要指定本地计算机,请键入计算机名称、点 (.
)、$env:COMPUTERNAME
或 localhost。
String
别名:Cn
位置:0
默认值:None
必需的:True
接受管道输入:True
接受通配符:False
-ConfigurationName
指定会话配置的名称。此 cmdlet 仅连接到使用指定会话配置的会话。
输入会话配置的配置名称或完全限定的资源 URI。如果仅指定配置名称,则会在前面添加以下架构 URI:
http://schemas.microsoft.com/powershell
。
会话的配置名称存储在会话的 ConfigurationName 属性中。
该参数的值用于选择和过滤会话。它不会更改会话使用的会话配置。
有关会话配置的更多信息,请参阅 about_Session_Configurations。
类型 :String
位置:命名
默认值:None
必需的:False
接受管道输入:True
接受通配符:False
-Confirm
在运行 cmdlet 之前提示您进行确认。
类型 :SwitchParameter
别名:cf
位置:命名
默认值:False
必需的:False
接受管道输入:False
接受通配符:False
-ConnectionUri
指定一个 URI,该 URI 定义用于重新连接到断开连接的会话的连接终结点。
URI 必须是完全限定的。该字符串的格式如下:
<Transport>://<ComputerName>:<Port>/<ApplicationName>
默认值如下:
http://localhost:5985/WSMAN
如果不指定连接 URI,则可以使用 UseSSL、ComputerName、Port 和 ApplicationName参数来指定连接 URI 值。
URI 的传输段的有效值为HTTP 和HTTPS。如果您指定带有传输段的连接 URI,但未指定端口,则将使用标准端口创建会话:80(用于 HTTP)和 443(用于 HTTPS)。要使用 PowerShell 远程处理的默认端口,请为 HTTP 指定端口 5985,为 HTTPS 指定端口 5986。
如果目标计算机将连接重定向到其他 URI,PowerShell 将阻止重定向,除非您在命令中使用 AllowRedirection 参数。
类型 :乌里
别名:URI, CU
位置:0
默认值:http://localhost:5985/WSMAN
必需的:True
接受管道输入:True
接受通配符:False
-Credential
指定有权连接到已断开连接的会话的用户帐户。默认为当前用户。
输入用户名,例如 User01 或 Domain01\User01,或输入由 Get-Credential cmdlet。如果您键入用户名,系统会提示您输入密码。
凭证存储在 PSCredential 对象中,密码存储为 SecureString。
笔记
有关 SecureString 数据保护的更多信息,请参阅 SecureString 的安全性如何?。
类型 :PS凭证
位置:命名
默认值:当前用户
必需的:False
接受管道输入:False
接受通配符:False
-Id
指定断开连接的会话的ID。仅当断开连接的会话之前连接到当前会话时,Id 参数才起作用。
当会话存储在本地计算机上但未连接到当前会话时,此参数有效,但无效。
类型 :整数32
位置:0
默认值:None
必需的:True
接受管道输入:True
接受通配符:False
-InstanceId
指定断开连接的会话的实例 ID。实例 ID 是唯一标识本地或远程计算机上的 PSSession 的 GUID。实例 ID 存储在 PSSession 的 InstanceID 属性中。
类型 :指导
位置:命名
默认值:None
必需的:True
接受管道输入:False
接受通配符:False
-JobName
为 Receive-PSSession
返回的作业指定一个友好名称。
当 OutTarget 参数的值为 Job 或在断开连接的会话中运行的作业已在当前会话中启动时,Receive-PSSession
返回作业。
如果在断开连接的会话中运行的作业是在当前会话中启动的,PowerShell 将重用会话中的原始作业对象并忽略 JobName 参数的值。
如果在断开连接的会话中运行的作业是在不同的会话中启动的,则 PowerShell 会创建一个新的作业对象。它使用默认名称,但您可以使用此参数更改名称。
如果 OutTarget 参数的默认值或显式值不是 Job,则命令会成功,但 JobName 参数不起作用。
类型 :String
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-Name
指定断开连接的会话的友好名称。
类型 :String
位置:命名
默认值:None
必需的:True
接受管道输入:False
接受通配符:False
-OutTarget
确定如何返回会话结果。该参数可接受的值为:
- 工作。在作业对象中异步返回结果。您可以使用 JobName 参数指定作业的名称或新名称。
- 主机。将结果返回到命令行(同步)。如果正在恢复命令或结果包含大量对象,则响应可能会延迟。
OutTarget 参数的默认值为 Host。如果在断开连接的会话中接收的命令是在当前会话中启动的,则 OutTarget 参数的默认值是命令启动时的形式。如果该命令作为作业启动,则默认情况下它会作为作业返回。否则,默认返回给宿主程序。
通常,主机程序会立即在命令行显示返回的对象,但这种行为可能会有所不同。
类型 :OutTarget
接受的值:默认、主机、作业
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-Port
指定用于重新连接到会话的远程计算机的网络端口。要连接到远程计算机,它必须侦听连接使用的端口。默认端口为 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\>
除非必要,否则不要使用端口参数。命令中设置的端口适用于运行该命令的所有计算机或会话。备用端口设置可能会阻止该命令在所有计算机上运行。
类型 :整数32
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-Session
指定断开连接的会话。输入包含 PSSession 的变量或创建或获取 PSSession 的命令,例如 Get-PSSession
命令。
PS会话
位置:0
默认值:None
必需的:True
接受管道输入:True
接受通配符:False
-SessionOption
指定会话的高级选项。输入 SessionOption 对象,例如使用 New-PSSessionOption
cmdlet 创建的对象,或者一个哈希表,其中键是会话选项名称,值是会话选项值。
选项的默认值由 $PSSessionOption
首选项变量(如果已设置)的值确定。否则,默认值由会话配置中设置的选项建立。
会话选项值优先于 $PSSessionOption
首选项变量和会话配置中设置的会话默认值。但是,它们并不优先于会话配置中设置的最大值、配额或限制。
有关包含默认值的会话选项的说明,请参阅New-PSSessionOption
。有关 $PSSessionOption 首选项变量的信息,请参阅 about_Preference_Variables。有关会话配置的更多信息,请参阅 about_Session_Configurations。
PS会话选项
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-UseSSL
指示此 cmdlet 使用安全套接字层 (SSL) 协议连接到断开连接的会话。默认情况下,不使用 SSL。
WS-Management 对通过网络传输的所有 PowerShell 内容进行加密。 UseSSL 是一种附加保护,可通过 HTTPS 连接而不是 HTTP 连接发送数据。
如果您使用此参数并且 SSL 在用于该命令的端口上不可用,则该命令将失败。
类型 :SwitchParameter
位置:命名
默认值:False
必需的:False
接受管道输入:False
接受通配符:False
-WhatIf
显示 cmdlet 运行时会发生什么情况。该 cmdlet 未运行。
类型 :SwitchParameter
别名:wi
位置:命名
默认值:False
必需的:False
接受管道输入:False
接受通配符:False
输入
PS会话
您可以通过管道将会话对象传递给此 cmdlet,例如 Get-PSSession
cmdlet 返回的对象。
Int32
您可以通过管道将会话 ID 传递给此 cmdlet。
指导
您可以通过此 cmdlet 管道传输会话的实例 ID。
字符串
您可以通过管道将会话名称传递给此 cmdlet。
输出
工作
如果 OutTarget 参数的值或默认值为 Job
,则 Receive-PSSession
返回作业对象。
PSObject
此 cmdlet 返回在断开连接的会话中运行的命令的结果(如果有)。
笔记
PowerShell 包含以下 Receive-PSSession
别名:
所有平台:
rcsn
此 cmdlet 仅适用于 Windows 平台。
Receive-PSSession
仅从已断开连接的会话获取结果。只有连接到或终止于运行 PowerShell 3.0 或更高版本的计算机的会话才可以断开连接并重新连接。
如果在断开连接的会话中运行的命令未生成结果,或者结果已返回到另一个会话,则 Receive-PSSession 不会生成任何输出。
会话的输出缓冲模式确定会话断开连接时会话中的命令如何管理输出。当会话的OutputBufferingMode选项值为Drop并且输出缓冲区已满时,该命令开始删除输出。 Receive-PSSession
无法恢复此输出。有关输出缓冲模式选项的详细信息,请参阅 New-PSSessionOption 和 New-PSTransportOption cmdlet 的帮助文章。
当您连接到 PSSession 或接收结果时,您无法更改 PSSession 的空闲超时值。 Receive-PSSession
的 SessionOption 参数采用具有 IdleTimeout 值的 SessionOption 对象。但是,当 SessionOption 对象的 IdleTimeout 值和 $PSSessionOption
变量的 IdleTimeout 值被忽略时,连接到 PSSession 或接收结果。
- 您可以在创建 PSSession 时使用
New-PSSession
或设置和更改 PSSession 的空闲超时Invoke-Command
cmdlet,以及当您与 PSSession 断开连接时。 - PSSession 的 IdleTimeout 属性对于断开连接的会话至关重要,因为它决定断开连接的会话在远程计算机上维持多长时间。断开连接的会话从断开连接的那一刻起就被视为空闲,即使命令正在断开连接的会话中运行。
如果您使用 Invoke-Command
cmdlet 的 AsJob 参数在远程会话中启动作业,则会在当前会话中创建作业对象,即使作业在远程会话中运行。如果断开远程会话,当前会话中的作业对象将与作业断开连接。作业对象包含返回给它的所有结果,但不会从断开连接的会话中的作业接收新结果。
如果不同的客户端连接到包含正在运行的作业的会话,则在原始会话中传递到原始作业对象的结果在新连接的会话中不可用。只有未传送到原始作业对象的结果在重新连接的会话中可用。
同样,如果您在会话中启动脚本,然后从会话断开连接,则连接到该会话的其他客户端将无法使用该脚本在断开连接之前传递到会话的任何结果。
要防止要断开连接的会话中的数据丢失,请使用 Invoke-Command
cmdlet 的 InDisconnectedSession 参数。由于此参数会阻止结果返回到当前会话,因此重新连接会话时所有结果都可用。
您还可以通过使用 Invoke-Command
cmdlet 在远程会话中运行 Start-Job
命令来防止数据丢失。在这种情况下,作业对象是在远程会话中创建的。您无法使用 Receive-PSSession
cmdlet 获取作业结果。相反,请使用 Connect-PSSession
cmdlet 连接到会话,然后使用 Invoke-Command
cmdlet 在以下位置运行 Receive-Job
命令:会议。
当包含正在运行的作业的会话断开连接然后重新连接时,仅当该作业断开连接并重新连接到同一会话时,才会重用原始作业对象,并且重新连接的命令未指定新的作业名称。如果会话重新连接到不同的客户端会话或指定了新的作业名称,PowerShell 将为新会话创建一个新的作业对象。
当您断开 PSSession 的连接时,会话状态为“已断开”且可用性为“无”。
- State 属性的值与当前会话相关。 Disconnected 值表示 PSSession 未连接到当前会话。但是,这并不意味着 PSSession 已与所有会话断开连接。它可能连接到不同的会话。要确定是否可以连接或重新连接到会话,请使用可用性属性。
- Availability 值为 None 表示您可以连接到会话。 Busy 值表示您无法连接到 PSSession,因为它已连接到另一个会话。
- 有关会话的 State 属性值的详细信息,请参阅 RunspaceState。
- 有关会话的 Availability 属性值的详细信息,请参阅 RunspaceAvailability。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag