Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
?
Solved

WMI to see result of remote command

Posted on 2008-06-10
8
Medium Priority
?
2,969 Views
Last Modified: 2013-12-17
I am trying to use WMI to execute a command on a remote computer (which I found out how to do), but what I need now is to see the actual result of the command. For example, if I run the ipconfig command I would like to see the result come back to my remote station. Is there any way to do this?
0
Comment
Question by:invisiblekhaos2
  • 4
  • 3
7 Comments
 
LVL 41

Expert Comment

by:graye
ID: 21752865
No, not really....

You *could* redirect the output of the command into a local text file, wait a few miliseconds for the file to close, and then read the contents of the file.
0
 

Author Comment

by:invisiblekhaos2
ID: 21753056
When I try that I get an unrecognized or incomplete command error...
0
 
LVL 41

Expert Comment

by:graye
ID: 21755666
Since the redirection actually uses the Command Shell, you'd have to modify your command to look like this:

        wmi = New ManagementClass("\\" & PC & "\root\cimv2:Win32_Process")
        wmi_in = wmi.GetMethodParameters("Create")
        wmi_in("CommandLine") = "cmd /c C:\SomeCommand.exe > C:\Temp\Output.txt"
        wmi_out = wmi.InvokeMethod("Create", wmi_in, Nothing)
        ret = Convert.ToInt32(wmi_out("returnValue"))
        If ret <> 0 Then
            Throw New ApplicationException("Create method error " & ret)
        End If
0
Granular recovery for Microsoft Exchange

With Veeam Explorer for Microsoft Exchange you can choose the Exchange Servers and restore points you’re interested in, and Veeam Explorer will present the contents of those mailbox stores for browsing, searching and exporting.

 

Author Comment

by:invisiblekhaos2
ID: 21803002
None of these answers worked... I found out a solution that works for me...
0
 

Author Comment

by:invisiblekhaos2
ID: 21816113

public String ExecuteRemoteCommands(String computerName, String command)
        {
            String line = null;
            String result = null;
            ConnectionOptions connOptions = new ConnectionOptions();
            ObjectGetOptions objectGetOptions = new ObjectGetOptions();
            ManagementPath managementPath = new ManagementPath("Win32_Process");
            connOptions.Impersonation = ImpersonationLevel.Impersonate;
            connOptions.EnablePrivileges = true;
            try
            {
                ManagementScope manScope = new ManagementScope(String.Format(@"\\{0}\ROOT\CIMV2", computerName), connOptions);
                manScope.Connect();
                ManagementClass processClass = new ManagementClass(manScope, managementPath, objectGetOptions);
                ManagementBaseObject inParams = processClass.GetMethodParameters("Create");
                inParams["CommandLine"] = "cmd /c " + command + " > c:\\tmp.txt";
                ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null);
                Thread.Sleep(5000);
                StreamReader sr = new StreamReader("\\\\" + computerName + "\\c$\\tmp.txt");
                line = sr.ReadLine();
                while (line != null)
                {
                    result += line;
                    line = sr.ReadLine();
                }
                sr.Close();
            }
            catch (Exception exception)
            {
                exception.Message.ToString();
            }
            return result;
        }

Open in new window

0
 
LVL 41

Accepted Solution

by:
graye earned 250 total points
ID: 21821113
Isn't that solution exactly what I had suggested?    Namely, to redirect the output to a file, wait a while, and then read the contents of the file
0
 

Author Closing Comment

by:invisiblekhaos2
ID: 31465704
Thanks, I never saw your message though... found the answer on another website...
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
Hello there! As a developer I have modified and refactored the unit tests which was written by fellow developers in the past. On the course, I have gone through various misconceptions and technical challenges when it comes to implementation. I would…
Screencast - Getting to Know the Pipeline
Look below the covers at a subform control , and the form that is inside it. Explore properties and see how easy it is to aggregate, get statistics, and synchronize results for your data. A Microsoft Access subform is used to show relevant calcul…
Suggested Courses
Course of the Month13 days, 17 hours left to enroll

580 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question