'PowerShell 7.2.1 New-PSSessionOption OperationTimeout cannot be found on Linux
For PS 7.2.1, the same call on Windows and Linux returned different results,
New-PSSessionOption -OperationTimeout 360000
On Windows it returned a list of params and values, with the OperationTimeout set correctly, 00:06:00.
But on Linux it failed, showing the following error:
New-PSSessionOption: A parameter cannot be found that matches parameter name 'OperationTimeout'.
What's wrong?
On Linux if I issued just "New-PSSessionOption", w/o any param, it'd return a list of params with default values, including ":OperationTimeout: 00:03:00". So, it's there in the implementation, but why can't I set it?
BTW, I was trying to copy many files, small and big in sizes, from Linux to Windows. But after the Copy-Item ran for a few minutes, it started failing with "Internal error parsing Wsman fault message...". That's why I wanted to set this timeout longer.
Solution 1:[1]
Perhaps you don't need to solve your problem, considering that OperationTimeout doesn't do what its name suggests:
OperationTimeout does not impose a time limit on commands or processes running in a remote session and does not affect other remoting protocols like SSH.
In short:
This comment on GitHub details what this setting actually controls: it is related to how long a remote machine may take to respond to a receive request, but PowerShell simply quietly retries in the event of a timeout. The tl;dr is:
-OperationTimeoutaffects "mostly nothing". Arguably, it should never have been exposed to end users.Implementing an actual operation-duration timeout is the subject of GitHub proposal #5434, which suggest adding a
-Timeoutparameter toInvoke-Command.
As for your symptom:
It may be a bug, because even though
OperationTimeoutis specific to WS-Man/WinRM, the remoting protocol used on Windows, you could still be trying to remote into a Windows machine, and theNew-PSSessionOptiondoesn't require you to commit to a protocol - only when you callNew-PSSessiondo you commit to a protocol, such as opting for SSH-based remoting via-SSHTransport.That said, since it sounds like the setting applies on the caller side, conceivably the Linux and macOS implementations of WS-Man may lack it. Generally, this implementation appears to have its problems and may not have a future - see this blog post.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
