Just specifying $Using:exclude
in the Where-Object cmdlet doesn't work because it is in a nested scriptblock.
In your case , the Using:folder
works because it is a local variable directly passed to the Invoke-Command
scriptblock.
But "Using:exclude
is passed to a scriptblock for Where-Object
, which is itself nested inside the scriptblock for Invoke-Command
.
$Using
allows to pass local variables to scriptblocks only one level deep, not to scriptblocks nested any further.
This behaviour is not specific to the Where-Object
scriptblock, any cmdlet which has a parameter taking a scriptblock behaves like this when it is inside a Invoke-Command
scriptblock.
Unfortunately, I don't think this behaviour is documented.
By uncommenting $Using:exclude
at the beginning of the Invoke-Command
scriptblock, you are effectively declaring the variable $exclude
inside the remote session.
So, in this case, $exclude
becomes a local variable inside the Invoke-Command
scriptblock and can be passed one level further, to the nested Where-Object
scriptblock.
That's why it works when you uncomment $Using:exclude
at the beginning of the Invoke-Command
scriptblock, it's a workaround for the behaviour of $Using
.
For the official help information about this run :
Get-Help about_remote_variables -Full
New-PSSession : [localhost] Beim Verbinden mit dem Remoteserver "localhost" ist folgender Fehler aufgetreten: Zugriff verweigert
– PeewitAdministrator
to start apssession
. Another issue: where do you uncomment, it is already uncommented. – Peewit