WMIC /节点:服务器进程调用创建不起作用?

时间:2019-01-23 17:32:58

标签: cmd wmic

我试图让服务器运行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;
};

这对我来说很奇怪,因为它似乎没有在运行命令。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

使用WMIC,您必须对命令进行两次换行才能将重定向器(>)传递给内部命令(whoami),而不是外部命令(cmd)。这是一个示例,包括我刚刚在其上使用过的系统的输出:

Cmd.exe:

$> 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