PSSessionOption 超时选项
New-PSSessionOption 用来为远程会话设定超时与行为参数:建立超时、空闲超时、取消超时等。在广域网、卫星链路或跨地域节点上,默认超时往往偏短,表现为「连不上、跑到一半断开」;把超时放大并配合并发限制,是让批量远程执行稳定下来的常用做法。
基本信息
| 适用平台 | Windows PowerShell 5.1 及以上 |
|---|---|
| 创建选项 | $opt = New-PSSessionOption -OpenTimeout 30000 |
| 常用参数 | OpenTimeout、IdleTimeout、CancelTimeout、OperationTimeout |
| 使用方式 | Invoke-Command -SessionOption $opt |
| 客户端默认值 | WSMan:\localhost\Client |
典型使用场景
- 跨地域或慢链路节点批量巡检时避免建立会话超时
- 判断「会话空闲一会儿就被断开」是超时设定还是网络抖动
- 为不同网络质量的目标配置差异化的超时策略
- 排查大批量并发执行时失败重试被放大的问题
- 查看并调整客户端默认会话参数以适应特定环境
- 为长时间批量任务调大空闲超时,避免执行中途被回收
常用示例
常用示例
$opt = New-PSSessionOption -OpenTimeout 30000 -CancelTimeout 10000 -IdleTimeout 600000
Invoke-Command -ComputerName slow-node -SessionOption $opt -ScriptBlock { hostname }
Get-Item WSMan:\localhost\Client # 查看客户端默认配置
New-PSSession -ComputerName web01 -SessionOption $opt # 建立可复用长会话
Get-PSSession | Select-Object ComputerName, State, IdleTimeout参数与影响
| 参数 | 含义 | 调大的影响 |
|---|---|---|
| OpenTimeout | 建立会话的超时 | 慢链路更易成功,故障发现变慢 |
| IdleTimeout | 空闲多久后被回收 | 长任务不容易被断开 |
| CancelTimeout | 取消操作的等待上限 | 中止更从容,但响应变慢 |
| OperationTimeout | 单次操作超时 | 返回大结果时更容易完成 |
空闲被断开属于设计行为而不是故障:IdleTimeout 到期后远端进程会被回收,需要长时间运行的任务应改用显式会话并定期活动,或适当调整超时。
放大超时之后一定要重新评估并发:超时变长会让故障节点占用连接的时间也变长,配合并发限制使用,避免出现雪崩式的重试风暴。参数一旦确定,建议写进脚本的公共函数里统一维护,而不是每处各写一套,改起来也不会漏。