PowerShell Remoting Limits
Remoting limits are the things remote commands cannot do on this platform. On this machine, a remote session cannot start, so remote work stays local.
A remote session cannot start here
New-PSSession asks for a remote link. On this platform, that link is missing.
try { $s = New-PSSession -ErrorAction Stop; "Session started" } catch { "Caught: " + $_.Exception.Message }A local command still runs
Invoke-Command without a remote host runs the block here. The result is plain text.
$r = Invoke-Command -ScriptBlock { "hello from here" }
"Local: $r"No session is left behind
After a failed attempt, no session exists to use. The session list is empty.
$n = (Get-PSSession).Count
"Sessions: $n"Example
$local = Invoke-Command -ScriptBlock { "ready" }
"Local: $local"
try { Invoke-Command -ComputerName "localhost" -ScriptBlock { "ready" } -ErrorAction Stop } catch { "Caught: " + $_.Exception.Message }Key points
- Remote session: a lasting link that runs commands on another machine.
- WSMan: the service that carries remote commands between machines.
- Use a local command when the work needs only this machine.
- Use try and catch to show a remote failure as a plain message.
- A failed remote attempt leaves no session behind to clean up.
In this example, the first block runs locally and prints its result. The second block tries a remote host and catches the failure. The caught message shows the missing WSMan service, so the lesson ends with an honest limit, not a pretend remote run.
Note
On Linux, this platform has no WSMan client, so remote sessions cannot start here.
Try it Yourself
Edit the code, then press Run.
Running is simulated
Exercise
Why does New-PSSession fail on this platform?