psexec运行从主机传递的Python脚本
我正在尝试通过psexec在远程计算机上运行一个python脚本。我可以连接并使用以下命令运行python.exe:
C:\test>psexec \\192.168.X.X -u domain\administrator -p password -i C:\Anaconda\python.exe
这里的python.exe路径是指远程计算机上的路径。这会在远程计算机上打开一个python窗口,一切正常。
现在我想把一个python脚本从主机计算机传到远程计算机上运行。这个脚本在主机计算机的C:\test\test.py位置。我尝试了:
psexec \\192.168.X.X -u domain\administrator -p password -i "C:\Anaconda\python.exe" -c C:\test\test.py
结果是:
C:\Anaconda\python.exe exited on 192.168.X.X with error code 1.
我还尝试了-c test.py,没有使用完整路径,结果也出现了类似的错误。我想的情况是远程应用找不到C:\test\test.py。我希望能够从主机计算机传递这个脚本。
非常感谢任何帮助。
2 个回答
0
如果远程机器上已经把 .py
文件后缀和 Python 安装关联起来,你可能只需要在命令行中去掉 Python 可执行文件,就能直接运行你的 Python 脚本:
psexec \\192.168.X.X -u domain\administrator -p password -i -c C:\test\test.py
请注意,我没有尝试过这个,因为我现在无法访问远程机器,所以不能保证它一定有效。
这一行
psexec \\192.168.X.X -u domain\administrator -p password -i "C:\Anaconda\python.exe" -c C:\test\test.py
可能是在远程机器上尝试运行命令 "C:\Anaconda\python.exe" -c C:\test\test.py
。换句话说,Python 可能是在解析 -c
这个选项,而不是 PsExec。Python 的 -c
选项是用来指定要运行的 Python 代码,而文件名显然不是有效的 Python 代码:
C:\Users\Luke>python -c "print 2 + 2"
4
C:\Users\Luke>python -c C:\test\test.py
File "<string>", line 1
C:\test\test.py
^
SyntaxError: invalid syntax
C:\Users\Luke>echo %ERRORLEVEL%
1
0
我能够从远程电脑和主机访问一个共享驱动器上的Python脚本,因此通过从主机复制到共享驱动器,并在远程机器上读取共享内容,我找到了一个合适的解决办法(不需要使用 -i 这个选项)。
psexec \\remote_machine_name -u domain\user -p pswrd -i C:/Anaconda/python.exe \\server\share\test\test.py
相关内容:如果你在Windows上运行Python脚本并且要写入一个UNC路径,比如上面的test.py,这里有一些有用的路径格式化帮助: