我试图让服务器运行python脚本,然后将脚本的输出保存到我从中调用命令的计算机上。这是命令:
wmic /node:server1 process call create "cmd.exe /c C:\python.exe C:\python\hello.py >> Z:\test\result.txt"
我在http://blog.commandlinekungfu.com/2009/05/episode-31-remote-command-execution.html上阅读了此文章,但这是2009年的旧文章。
server1是我要在其上运行python脚本的服务器的服务器名称。在该服务器上,Z驱动器映射到我从其调用命令的计算机的C驱动器。 C:\ python.exe和C:\ python \ hello.py是服务器的C驱动器。我已经尝试过使用UNC路径,但这也不起作用。
hello.py所做的只是将“ Hello”打印为标准输出。
我已通过在服务器中打开命令提示符然后运行它来验证命令cmd.exe /c C:\python.exe C:\python\hello.py >> Z:\test\result.txt
是否有效。它将创建一个名为result.txt的文件,其中包含“ Hello”
但是,使用wmic / node:server1进程调用create调用不会创建文件result.txt。
我也尝试过
wmic /node:server1 /user:"adminUsername" /password:"adminUsersPw" process call create "cmd.exe /c C:\python.exe C:\python\hello.py >> Z:\test\result.txt"
没有运气。
当我运行该命令时,我得到类似的东西:
Executing (Win32_Process)->Create()
Method execution successful.
Out Parameters:
instance of __PARAMETERS
{
ProcessId = 4116;
ReturnValue = 0;
};
这对我来说很奇怪,因为它似乎没有在运行命令。有什么想法吗?
答案 0 :(得分:0)
使用WMIC,您必须对命令进行两次换行才能将重定向器(>)传递给内部命令(whoami),而不是外部命令(cmd)。这是一个示例,包括我刚刚在其上使用过的系统的输出:
$> dir \\NameOfRemoteSystem\c$\temp\z.txt
File Not Found
$> wmic /node:NameOfRemoteSystem process call create 'cmd.exe /c "whoami /all >c:\temp\z.txt"'
Executing (Win32_Process)->Create()
Method execution successful.
Out Parameters:
instance of __PARAMETERS
{
ProcessId = 20460;
ReturnValue = 0;
};
$> dir \\NameOfRemoteSystem\c$\temp\z.txt
03/27/2019 04:40 PM 17,977 z.txt