To complement briantist's helpful answer:
The script block passed to Invoke-Command
is (as intended) executed on the remote machine, using the remote machine's variables by default.
Thus, in order to use a local variable (value), extra steps are needed (to put it differently: inside a script block executed remotely, you cannot just refer to local variables as you normally would, such as with $dest
):
PS v3+ offers the using: scope modifier for direct use of a local variable inside the script block - see briantist's first command.
- Note that
using:
only works when Invoke-Command
actually targets a remote machine.
The only option that also works in earlier versions is to pass the local variable as a parameter to the script block. - see briantist's second command.