对于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实现可能缺少它。一般来说,这个实现似乎有问题,可能没有未来-请参阅这篇博客文章。