如何使用.net中的WMI存储在远程计算机的CMD上运行的命令输出?

时间:2017-01-07 11:29:37

标签: c# cmd wmi

我可以使用 WMI 连接到远程计算机。我想在远程计算机的cmd中运行一些命令,然后在代码中使用这些输出。首先我可以运行cmd命令,但我无法访问输出。我可以在本地机器上看到它们吗? 因为这个问题,我尝试将输出存储到远程机器上的文件中,然后从本地机器读取该文件。但似乎无法完成。 我知道有一些其他工具而不是WMI,但我想知道我可以使用WMI将cmd命令的输出存储在变量中吗?

此代码在tmp_dr.txt中保存cmd命令的输出,然后尝试访问存在tmp_dr.txt的路径但发生异常不支持给定路径的格式。< / strong>当我使用C $而不是c:另一个例外是:用户名或密码不正确。但是我成功连接到远程PC并创建了tmp_dr.txt。

            ip = "172.17.9.2";
            username = "FB\\****";
            password = "****";
            port = 22;
            //    var processToRun = new[] { "cmd.exe" };
            var connection = new ConnectionOptions();
            connection.Username = username;
            connection.Password = password;
            var wmiScope = new ManagementScope(String.Format("\\\\{0}\\root\\cimv2", "FB"), connection);
            var wmiProcess = new ManagementClass(wmiScope, new ManagementPath("Win32_Process"), new ObjectGetOptions());
             try
            {
                 ManagementBaseObject inParams =               wmiProcess.GetMethodParameters("Create");
                 inParams["CommandLine"] = "cmd /c ls > c:\\tmp_dr.txt";
                 inParams["CurrentDirectory"] = @"c:\windows\system32";
                 var result = wmiProcess.InvokeMethod("Create", inParams, null);
                 FileStream sr = new     FileStream(@"\\FB\c:\tmp_dr.txt",FileMode.Open);
                 string line = sr.Read()         
            } 

0 个答案:

没有答案