PowerShell 7.2.1在Linux上找不到新的PSSessionOption OperationTimeout



对于PS 7.2.1,在Windows和Linux上的相同调用返回不同的结果,

New-PSSessionOption -OperationTimeout 360000

在Windows上,它返回了一个参数和值列表,OperationTimeout设置正确,即00:06:00。

但在Linux上,它失败了,显示以下错误:

New-PSSessionOption: A parameter cannot be found that matches parameter name 'OperationTimeout'.

怎么了?

在Linux上,如果我只发布";New PSSessionOption";,如果没有任何param,它将返回一个具有默认值的param列表,包括":操作超时:00:03:00";。所以,它在实现中就存在,但为什么我不能设置它呢?

顺便说一句,我试着从Linux到Windows复制许多大小不一的文件。但在复制项目运行几分钟后,它开始失败,并显示";分析Wsman故障消息时出现内部错误&";。这就是为什么我想把这个超时设置得更长。

考虑到OperationTimeout并不像它的名字所暗示的那样:,也许你不需要解决你的问题

OperationTimeout不会对在远程会话中运行的命令或进程施加时间限制,也不会影响SSH等其他远程处理协议。

简而言之:

  • GitHub上的这条评论详细说明了此设置实际控制的内容:它与远程计算机响应接收请求所需的时间有关,但PowerShell只是在超时时悄悄重试tl;dr是:CCD_ 2影响";基本上什么都没有">。可以说,它不应该暴露给最终用户。

  • 实现实际操作持续时间超时是GitHub第5434号提案的主题,该提案建议在Invoke-Command中添加-Timeout参数。


至于你的症状:

  • 这可能是一个错误,因为即使OperationTimeout是特定于WS-Man/CWinRM(Windows上使用的远程处理协议(,您仍然可以尝试远程到Windows计算机,并且New-PSSessionOption不要求您提交协议-只有当您调用New-PSSession时,您才会提交协议,例如通过-SSHTransport选择基于SSH的远程处理。

  • 也就是说,由于听起来该设置适用于调用方,可以想象WS-Man的Linux和macOS实现可能缺少它。一般来说,这个实现似乎有问题,可能没有未来-请参阅这篇博客文章。

最新更新