
이와 같은 원격 컴퓨터에서 명령을 실행하고 싶습니다
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이며 해당 변수의 값이 아닙니다.
답변1
이것은 작동합니다:
$NewPassword = 'Mahmood00'
Invoke-Command -ComputerName $RemoteMachine -Credential $Cred -ScriptBlock {
Param($NewPassword)
$Expression = 'echo {0} | "C:\Program Files (x86)\AnyDesk\AnyDesk.exe" --set-password' -f $NewPassword
Start-Process cmd.exe -ArgumentList "/c $Expression"
} -ArgumentList $NewPassword
이것은 필요하지 않습니다 $Using:Varname
. 일반적으로 Scriptblock에 전달하면 됩니다.
답변2
전체 파이프에 대해 원격 "cmd /c"를 실행하는 것이 좋습니다. 컴퓨터에서 원격지로 환경 변수를 전달하려면 매개
ArgumentList
변수를 사용하세요.
테스트하지 않으면 다음과 같습니다.
Invoke-Command -ComputerName $RemoteMachine -Credential $Cred
-ScriptBlock {
Param ($param1)
'echo $param1 | "C:\Program Files (x86)\AnyDesk\AnyDesk.exe" --set-password'}
ArgumentList = $Using:NewPassword
문서를 참조하십시오 호출 명령.