我想在这样的远程机器上运行命令
Invoke-Command -ComputerName $RemoteMachine -Credential $Cred `
-ScriptBlock { echo MYPASS | "C:\Program Files (x86)\AnyDesk\AnyDesk.exe" --set-password}
但是,我收到此错误
At C:\Users\user\Desktop\anydesk.ps1:14 char:33
+ ... o MYPASS | "C:\Program Files (x86)\AnyDesk\AnyDesk.exe" --set-pass ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expressions are only allowed as the first element of a pipeline.
使用管道时,指定程序的路径似乎有问题。我该如何解决?
更新:
由于我想在具有多个命令的脚本块中使用它并将变量传递给脚本块,因此以下修改也不起作用。
$NewPassword = 'Mahmood00'
Invoke-Command -ComputerName $RemoteMachine -Credential $Cred -ScriptBlock {
& {
Param(param1)
'echo $param1 | "C:\Program Files (x86)\AnyDesk\AnyDesk.exe" --set-password'
} } ArgumentList = $Using:NewPassword
那有语法问题。如果我使用
$NewPassword = 'Mahmood00'
Invoke-Command -ComputerName $RemoteMachine -Credential $Cred -ScriptBlock {
& Param(param1){
'echo $param1 | "C:\Program Files (x86)\AnyDesk\AnyDesk.exe" --set-password'
} } ArgumentList = $Using:NewPassword
我收到此错误:
A Using variable cannot be retrieved. A Using variable can be used only with Invoke-Command,
更新 2:
使用局部变量也不起作用。见下文:
Invoke-Command -ComputerName $RemoteMachine -Credential $Cred -ScriptBlock {
& {
$param1 = $Using:NewPassword
cmd /c 'echo $param1 | "C:\Program Files (x86)\AnyDesk\AnyDesk.exe" --set-password'
} }
密码实际上是 $param1 而不是该变量的值。
这应该有效:
你不需要
$Using:Varname
这个,你可以将它正常传递给 Scriptblock我建议对整个管道执行远程“cmd /c”。要将环境变量从您的计算机传递到远程,请使用该
ArgumentList
参数。未经测试,类似:
请参阅Invoke-Command的文档 。