Capturing nslookup shell output with C#

Yes - that Jake. picture Yes - that Jake. · Dec 9, 2008 · Viewed 10.3k times · Source

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.

Answer

mmx picture mmx · Dec 9, 2008
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.