如何在Invoke-Command中为脚本块传递$path参数?
给Invoke-Command的脚本块传参数的几种方法
1. 用-ArgumentList按位置传值
这是最常用的方式,直接把参数值按脚本块里param的定义顺序传进去就行:
Invoke-Command -ScriptBlock $test -ArgumentList "C:\Your\Target\Path"
脚本块里的$path会自动拿到-ArgumentList里的第一个值。要是脚本块有多个参数,依次往后加即可,比如-ArgumentList "路径1", "参数2"。
2. 远程执行时用$using:引用本地变量
如果是通过Invoke-Command远程执行脚本(指定了-ComputerName参数),想直接复用本地会话里的变量,就用$using:关键字:
先在本地定义变量:
$myPath = "C:\Remote\Target\Path"
然后调用时把这个变量传给脚本块的参数:
Invoke-Command -ComputerName RemoteServer -ScriptBlock $test -ArgumentList $using:myPath
这样远程的脚本块就能获取到本地$myPath的值。
3. 本地执行直接用调用操作符传命名参数
如果只是在本地执行,没必要用Invoke-Command,直接用&调用脚本块,还能像调用普通函数一样传命名参数:
& $test -Path "C:\Local\Test\Path"
这种方式参数对应关系更直观。
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

