[玩转系统] 断开连接-PSSession (Microsoft.PowerShell.Core)
作者:精品下载站 日期:2024-12-14 02:16:43 浏览:13 分类:玩电脑
断开连接-PSSession (Microsoft.PowerShell.Core)
断开连接-PSSession
模块 :Microsoft.PowerShell.Core与会话断开连接。
句法
Disconnect-PSSession
[-Session] <PSSession[]>
[-IdleTimeoutSec <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Disconnect-PSSession
[-IdleTimeoutSec <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-ThrottleLimit <Int32>]
-Name <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Disconnect-PSSession
[-IdleTimeoutSec <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-ThrottleLimit <Int32>]
-InstanceId <Guid[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Disconnect-PSSession
[-IdleTimeoutSec <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-ThrottleLimit <Int32>]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
描述
此 cmdlet 仅适用于 Windows 平台。
Disconnect-PSSession
cmdlet 将 PowerShell 会话 (PSSession)(例如使用 New-PSSession
cmdlet 启动的会话)与当前会话断开连接。因此,PSSession 处于断开状态。您可以从当前会话或本地计算机或另一台计算机上的另一个会话连接到断开连接的 PSSession。
Disconnect-PSSession
cmdlet 仅断开连接到当前会话的打开的 PSSession。 Disconnect-PSSession
无法断开损坏或关闭的 PSSession 或使用 Enter-PSSession
cmdlet 启动的交互式 PSSession,并且它无法断开连接到其他会话的PSSession。
要重新连接到断开连接的 PSSession,请使用 Connect-PSSession
或 Receive-PSSession
cmdlet。
当 PSSession 断开连接时,PSSession 中的命令将继续运行直至完成,除非 PSSession 超时或 PSSession 中的命令PSSession 被完整的输出缓冲区阻塞。要更改空闲超时,请使用 IdleTimeoutSec 参数。要更改输出缓冲模式,请使用 OutputBufferingMode 参数。您还可以使用 Invoke-Command
cmdlet 的 InDisconnectedSession 参数在以下位置运行命令:断开连接的会话。
有关“断开连接的会话”功能的更多信息,请参阅 about_Remote_Disconnected_Sessions。
此 cmdlet 是在 Windows PowerShell 3.0 中引入的。
示例
示例 1 - 按名称断开会话
此命令断开 Server01 计算机上的 UpdateSession
PSSession 与当前会话的连接。该命令使用名称参数来标识PSSession。
PS> Disconnect-PSSession -Name UpdateSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 UpdateSession Server01 Disconnected Microsoft.PowerShell None
输出显示尝试断开连接成功。会话状态为Disconnected
,Availability为None
,这表明会话不忙,可以重新连接。
示例 2 - 断开与特定计算机的会话连接
此命令将 Server12 计算机上的 ITTask
PSSession 与当前会话断开连接。 ITTask
会话是在当前会话中创建的,并连接到 Server12 计算机。该命令使用 Get-PSSession
cmdlet 获取会话,并使用 Disconnect-PSSession
cmdlet 断开会话连接。
PS> Get-PSSession -ComputerName Server12 -Name ITTask |
Disconnect-PSSession -OutputBufferingMode Drop -IdleTimeoutSec 86400
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server12 Disconnected ITTasks None
Disconnect-PSSession
命令使用 OutputBufferingMode 参数将输出模式设置为 Drop
。此设置可确保即使会话输出缓冲区已满,会话中正在运行的脚本也可以继续运行。由于脚本将其输出写入文件共享上的报告,因此其他输出可能会丢失,而不会产生任何后果。
该命令还使用 IdleTimeoutSec 参数将会话的空闲超时延长至 24 小时。此设置允许该管理员或其他管理员有时间重新连接到会话,以验证脚本是否运行并在需要时进行故障排除。
示例 3 - 在多台计算机上使用多个 PSSession
这一系列命令展示了如何在企业场景中使用 Disconnect-PSSession
cmdlet。在这种情况下,新技术人员在远程计算机上的会话中启动脚本并遇到问题。技术人员断开与会话的连接,以便更有经验的经理可以连接到会话并解决问题。
PS> $s = New-PSSession -ComputerName Srv1, Srv2, Srv30 -Name ITTask
PS> Invoke-Command $s -FilePath \Server01\Scripts\Get-PatchStatus.ps1
PS> Get-PSSession -Name ITTask -ComputerName Srv1 | Disconnect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Srv1 Disconnected Microsoft.PowerShell None
PS> Get-PSSession -ComputerName Srv1, Srv2, Srv30 -Name ITTask
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Srv1 Disconnected Microsoft.PowerShell None
2 ITTask Srv2 Opened Microsoft.PowerShell Available
3 ITTask Srv30 Opened Microsoft.PowerShell Available
PS> Get-PSSession -ComputerName Srv1 -Name ITTask -Credential Domain01\User01
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Srv1 Disconnected Microsoft.PowerShell None
PS> $s = Connect-PSSession -ComputerName Srv1 -Name ITTask -Credential Domain01\User01
PS> Invoke-Command -Session $s {dir $HOME\Scripts\PatchStatusOutput.ps1}
PS> Invoke-Command -Session $s {mkdir $HOME\Scripts\PatchStatusOutput}
PS> Invoke-Command -Session $s -FilePath \Server01\Scripts\Get-PatchStatus.ps1
PS> Disconnect-PSSession -Session $s
技术人员首先在多台远程计算机上创建会话并在每个会话中运行脚本。第一个命令使用 New-PSSession
cmdlet 在三台远程计算机上创建 ITTask
会话。该命令将会话保存在 $s
变量中。第二个命令使用 Invoke-Command
cmdlet 的 FilePath 参数在 $s
变量中的会话中运行脚本。
在 Srv1 计算机上运行的脚本生成意外错误。技术人员联系他的经理并寻求帮助。经理指示技术人员断开与会话的连接,以便他可以进行调查。第二个命令使用 Get-PSSession
cmdlet 获取 Srv1 计算机上的 ITTask
会话,并且 Disconnect-PSSession
cmdlet 以断开连接。此命令不会影响其他计算机上的 ITTask
会话。
第三个命令使用 Get-PSSession
cmdlet 获取 ITTask
会话。输出显示 Srv2 和 Srv30 计算机上的 ITTask
会话不受断开连接命令的影响。
经理登录到他的家庭计算机,连接到他的公司网络,启动 PowerShell,并使用 Get-PSSession
cmdlet 获取 Srv1 计算机上的 ITTask
会话。他使用技术人员的凭据来访问会话。
接下来,管理器使用 Connect-PSSession
cmdlet 连接到 Srv1 计算机上的 ITTask
会话。该命令将会话保存在 $s
变量中。
管理器使用 Invoke-Command
cmdlet 在会话中的 $s
变量中运行一些诊断命令。他认识到脚本失败是因为它没有找到所需的目录。经理使用 MkDir
函数创建目录,然后重新启动 Get-PatchStatus.ps1
脚本并断开与会话的连接。经理向技术人员报告他的发现,建议他重新连接到会话以完成任务,并要求他向 Get-PatchStatus.ps1
脚本添加一个命令,用于创建所需的目录(如果不存在)。
示例 4 - 更改 PSSession 的超时值
此示例演示如何更正会话的 IdleTimeout 属性值,以便可以将其断开连接。
会话的空闲超时属性对于断开连接的会话至关重要,因为它决定断开连接的会话在被删除之前维持多长时间。您可以在创建会话和断开会话时设置空闲超时选项。会话空闲超时的默认值在本地计算机上的 $PSSessionOption
首选项变量和远程计算机上的会话配置中设置。为会话设置的值优先于会话配置中设置的值,但会话值不能超过会话配置中设置的配额,例如 MaxIdleTimeoutMs 值。
PS> $Timeout = New-PSSessionOption -IdleTimeout 172800000
PS> $s = New-PSSession -Computer Server01 -Name ITTask -SessionOption $Timeout
PS> Disconnect-PSSession -Session $s
Disconnect-PSSession : The session ITTask cannot be disconnected because the specified
idle timeout value 172800(seconds) is either greater than the server maximum allowed
43200 (seconds) or less that the minimum allowed60(seconds). Choose an idle time out
value that is within the allowed range and try again.
PS> Invoke-Command -ComputerName Server01 {Get-PSSessionConfiguration Microsoft.PowerShell} |
Format-List -Property *
Architecture : 64
Filename : %windir%\system32\pwrshplugin.dll
ResourceUri : http://schemas.microsoft.com/powershell/microsoft.powershell
MaxConcurrentCommandsPerShell : 1000
UseSharedProcess : false
ProcessIdleTimeoutSec : 0
xmlns : http://schemas.microsoft.com/wbem/wsman/1/config/PluginConfiguration
MaxConcurrentUsers : 5
lang : en-US
SupportsOptions : true
ExactMatch : true
RunAsUser :
IdleTimeoutms : 7200000
PSVersion : 3.0
OutputBufferingMode : Block
AutoRestart : false
SecurityDescriptorSddl : O:NSG:BAD:P(A;;GA;;;BA)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)
MaxMemoryPerShellMB : 1024
MaxIdleTimeoutms : 2147483647
Uri : http://schemas.microsoft.com/powershell/microsoft.powershell
SDKVersion : 2
Name : microsoft.powershell
XmlRenderingType : text
Capability : {Shell}
RunAsPassword :
MaxProcessesPerShell : 15
ParentResourceUri : http://schemas.microsoft.com/powershell/microsoft.powershell
Enabled : true
MaxShells : 25
MaxShellsPerUser : 25
Permission : BUILTIN\Administrators AccessAllowed
PSComputerName : localhost
RunspaceId : aea84310-6dbf-4c21-90ac-13980039925a
PSShowComputerName : True
PS> $s.Runspace.ConnectionInfo
ConnectionUri : http://Server01/wsman
ComputerName : Server01
Scheme : http
Port : 80
AppName : /wsman
Credential :
ShellUri : http://schemas.microsoft.com/powershell/Microsoft.PowerShell
AuthenticationMechanism : Default
CertificateThumbprint :
MaximumConnectionRedirectionCount : 5
MaximumReceivedDataSizePerCommand :
MaximumReceivedObjectSize : 209715200
UseCompression : True
NoMachineProfile : False
ProxyAccessType : None
ProxyAuthentication : Negotiate
ProxyCredential :
SkipCACheck : False
SkipCNCheck : False
SkipRevocationCheck : False
NoEncryption : False
UseUTF16 : False
OutputBufferingMode : Drop
IncludePortInSPN : False
Culture : en-US
UICulture : en-US
OpenTimeout : 180000
CancelTimeout : 60000
OperationTimeout : 180000
IdleTimeout : 172800000
PS> Disconnect-PSSession $s -IdleTimeoutSec 43200
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
4 ITTask Server01 Disconnected Microsoft.PowerShell None
PS> $s.Runspace.ConnectionInfo.IdleTimeout
43200000
第一个命令使用 New-PSSessionOption
cmdlet 创建会话选项对象。它使用 IdleTimeout 参数将空闲超时设置为 48 小时(172800000
毫秒)。该命令将会话选项对象保存在 $Timeout
变量中。
第二个命令使用 New-PSSession
cmdlet 在 Server01 计算机上创建 ITTask
会话。该命令将会话保存在 $s
变量中。 SessionOption 参数的值是 $Timeout
变量中的 48 小时空闲超时。
第三个命令断开 $s
变量中的 ITTask
会话。该命令失败,因为会话的空闲超时值超出了会话配置中的 MaxIdleTimeoutMs 配额。由于在会话断开连接之前不会使用空闲超时,因此在会话使用期间可能不会检测到这种违规行为。
第四条命令使用 Invoke-Command
cmdlet 为 Server01 计算机上的 Microsoft.PowerShell
会话配置运行 Get-PSSessionConfiguration
命令。该命令使用 Format-List
cmdlet 在列表中显示会话配置的所有属性。输出显示 MaxIdleTimeoutMS 属性,该属性建立了允许的最大使用会话配置的会话的 IdleTimeout 值为 43200000
毫秒(12 小时)。
第五个命令获取 $s
变量中会话的会话选项值。许多会话选项的值是会话的 Runspace 属性的 ConnectionInfo 属性。输出显示 IdleTimeout 的值会话的属性为 172800000
毫秒(48 小时),这违反了会话配置中 12 小时的 MaxIdleTimeoutMs 配额。要解决此冲突,您可以使用 >ConfigurationName 参数来选择不同的会话配置,或使用 IdleTimeout 参数来减少会话的空闲超时。
第六个命令断开会话。它使用 IdleTimeoutSec 参数将空闲超时设置为最大值 12 小时。
第七个命令获取已断开连接的会话的 IdleTimeout 属性值,该值以毫秒为单位。输出确认命令成功。
参数
-Confirm
在运行 cmdlet 之前提示您进行确认。
类型 :SwitchParameter
别名:cf
位置:命名
默认值:False
必需的:False
接受管道输入:False
接受通配符:False
-Id
断开与指定会话 ID 的会话的连接。键入一个或多个 ID(以逗号分隔),或使用范围运算符 (..
) 指定 ID 范围。
要获取会话 ID,请使用 Get-PSSession
cmdlet。实例 ID 存储在会话的 ID 属性中。
Int32[]
位置:1
默认值:None
必需的:True
接受管道输入:True
接受通配符:False
-IdleTimeoutSec
更改断开连接的 PSSession 的空闲超时值。输入一个以秒为单位的值。最小值为 60
(1 分钟)。
空闲超时确定断开连接的 PSSession 在远程计算机上维持的时间。当超时到期时,PSSession 将被删除。
断开连接的 PSSession 从断开连接那一刻起就被视为空闲,即使命令正在断开连接的会话中运行也是如此。
会话空闲超时的默认值由会话配置的 IdleTimeoutMs 属性值设置。默认值为 7200000
毫秒(2 小时)。
此参数的值优先于 $PSSessionOption
首选项变量的 IdleTimeout 属性值以及会话配置中的默认空闲超时值。但是,该值不能超过会话配置的 MaxIdleTimeoutMs 属性的值。 MaxIdleTimeoutMs 的默认值为 12 小时(43200000
毫秒)。
整数32
位置:命名
默认值:60
必需的:False
接受管道输入:False
接受通配符:False
-InstanceId
断开与指定实例 ID 的会话的连接。
实例 ID 是唯一标识本地或远程计算机上的会话的 GUID。即使在多台计算机上的多个会话中,实例 ID 也是唯一的。
要获取会话的实例 ID,请使用 Get-PSSession
cmdlet。实例 ID 存储在会话的 InstanceID 属性中。
指导[]
位置:命名
默认值:None
必需的:True
接受管道输入:True
接受通配符:False
-Name
断开与指定友好名称的会话的连接。允许使用通配符。
要获取会话的友好名称,请使用 Get-PSSession
cmdlet。友好名称存储在会话的 Name 属性中。
String[]
位置:命名
默认值:None
必需的:True
接受管道输入:True
接受通配符:True
-OutputBufferingMode
确定当输出缓冲区已满时如何在断开连接的会话中管理命令输出。默认值为阻止
。
如果断开连接的会话中的命令返回输出并且输出缓冲区已满,则此参数的值有效地确定命令在会话断开连接时是否继续运行。 Block
值会暂停命令,直到会话重新连接。 Drop
值允许命令完成,但数据可能会丢失。使用 Drop
值时,将命令输出重定向到磁盘上的文件。
有效值为:
Block
:当输出缓冲区已满时,执行将暂停,直到缓冲区被清除。Drop
:当输出缓冲区已满时,继续执行。保存新输出时,最旧的输出将被丢弃。None
:未指定输出缓冲模式。会话配置的 OutputBufferingMode 属性的值用于断开连接的会话。
输出缓冲模式
位置:命名
默认值:堵塞
必需的:False
接受管道输入:False
接受通配符:False
-Session
与指定的 PSSession 断开连接。输入 PSSession 对象,例如 New-PSSession
cmdlet 返回的对象。您还可以通过管道将 PSSession 对象传递给 Disconnect-PSSession
。
Get-PSSession
cmdlet 可以获取在远程计算机上终止的所有 PSSession,包括断开连接的 PSSession 和 PSSession > 连接到其他计算机上的其他会话。 Disconnect-PSSession
仅断开连接到当前会话的 PSSession。如果将其他 PSSession 通过管道传输到 Disconnect-PSSession
,则 Disconnect-PSSession
命令将失败。
PS会话[]
位置:1
默认值:None
必需的:True
接受管道输入:True
接受通配符:False
-ThrottleLimit
设置 Disconnect-PSSession
命令的限制。
限制是可以建立运行此命令的最大并发连接数。如果省略此参数或输入值 0
,则使用默认值 32
。
限制仅适用于当前命令,不适用于会话或计算机。
类型 :整数32
位置:命名
默认值:32
必需的:False
接受管道输入:False
接受通配符:False
-WhatIf
显示 cmdlet 运行时会发生什么情况。该 cmdlet 未运行。
类型 :SwitchParameter
别名:wi
位置:命名
默认值:False
必需的:False
接受管道输入:False
接受通配符:False
输入
PS会话
您可以通过管道将会话传输到此 cmdlet。
输出
PS会话
此 cmdlet 返回一个表示它断开连接的会话的对象。
笔记
PowerShell 包含以下 Disconnect-PSSession
别名:
Windows:
dnsn
此 cmdlet 仅在 Windows 平台上可用。
仅当本地和远程计算机运行 PowerShell 3.0 或更高版本时,
Disconnect-PSSession
cmdlet 才有效。如果在断开连接的会话上使用
Disconnect-PSSession
cmdlet,则该命令不会对会话产生任何影响,也不会生成错误。具有交互式安全令牌的已断开环回会话(使用 EnableNetworkAccess 参数创建的会话)只能从创建会话的计算机重新连接。此限制可保护计算机免受恶意访问。
当您断开 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