Search code examples
c#shell.net-2.0nslookup

Capturing nslookup shell output with C#


I have a command-line process I would like to automate and capture in C#.

At the command line, I type:

nslookup

This launches a shell which gives me a > prompt. At the prompt, I then type:

ls -a mydomain.local

This returns a list of local CNAMEs from my primary DNS server and the physical machines they are attached to.

What I would like to do is automate this process from C#. If this were a simple command, I would just use Process.StartInfo.RedirectStandardOutput = true, but the requirement of a second step is tripping me up.


Solution

  • ProcessStartInfo si = new ProcessStartInfo("nslookup");
    si.RedirectStandardInput = true;
    si.RedirectStandardOutput = true;
    Process nslookup = new Process(si);
    nslookup.Start();
    nslookup.StandardInput.WriteLine("ls -a mydomain.local");
    nslookup.StandardInput.Flush();
    // use nslookup.StandardOutput stream to read the result.