psexec运行从主机传递的Python脚本

-1 投票
2 回答
8892 浏览
提问于 2025-04-18 14:48

我正在尝试通过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,这里有一些有用的路径格式化帮助:

在Windows上从Python脚本复制文件到网络位置而不映射驱动器

撰写回答