我正在尝试使用powershell运行位于计算机A上的bat脚本并在计算机B上执行它
计算机A是调用调用命令功能的计算机
我试图通过
来做到这一点Invoke-Command -ComputerName ComputerB -ScriptBlock{& "\\ComputerA\filepath\batch.bat"} -Credential $Cred
当我运行时,我收到错误
The term '\\ComputerA\filepath\batch.bat' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
我还尝试通过调用计算机B上的cmd来运行它并将此bat脚本作为参数传递,但我没有收到任何错误但我可以告诉脚本没有运行 我用于此的命令是
Invoke-Command -ComputerName ComputerB -ScriptBlock{& "C:\Windows\System32\cmd.exe"} -ArgumentList "\\ComputerA\filepath\batch.bat" -Credential $Cred
当我进入计算机B并通过cmd手动调用脚本时,它可以正常工作
我确认Invoke-Command有效,因为我能够运行计算机B本地的程序
我试图不必将任何文件放在计算机B上,例如psexec或bat脚本本身,这就是我尝试这种方式的原因
谢谢
答案 0 :(得分:0)
当您远程访问某台计算机(在本例中为ComputerB)并尝试访问ComputerA上的某些内容时,您基本上是在尝试访问默认情况下不允许的网络资源。使用Invoke-Command中的-EnableNetworkAccess参数显式允许相同的
答案 1 :(得分:0)
这听起来像是"双跃点" - /"第二跳" -problem。您的凭据在远程会话中不可用(访问网络共享)。 解决方案:
Invoke-Command -Authentication Credssp
Invoke-Command -Scriptblock { & "c:\temp\batch.bat" }
psexec.exe