in reply to Re: Convert from c# to Perl
in thread Convert from c# to Perl

Because when you pipe commands through psexec, you cant parse through it. It throws it in a different format. Ive tried it a few times. for example..

$var = `psexec \\server netstat -n`;

shouldn't display what psexec does unless you print $var, but it does

Thanks for the code! I was close, but never would have figured out the BYREF Variant values.

Is there a way to display the output of this command?

Replies are listed 'Best First'.
Re^3: Convert from c# to Perl
by repellent (Priest) on Aug 10, 2010 at 22:38 UTC
    You're most likely referring to psexec's STDERR. Try capturing it:
    my $stderr; my $stdout = do { open(local *STDERR, ">", \$stderr) or die "Could not capture STDERR: $!"; qx(psexec \\\\server netstat -n); }; print "psexec stdout: $stdout\n"; print "-" x 60, "\n"; print "psexec stderr: $stderr\n";

      Thanks for the code! I was close, but never would have figured out the BYREF Variant values.

    It was eyepopslikeamosquito, not me :-)

      Yeah, I was trying to get it to stop displaying the intro/header of psexec

      PsExec v1.96 - Execute processes remotely Copyright (C) 2001-2009 Mark Russinovich Sysinternals - www.sysinternals.com netstat exited on webd15 with error code 0.
        According to online sources, it seems that psexec sends its output to stderr. This ought to work:
        use File::Temp qw(tempfile); my $stderr_fh = tempfile(); my $stdout = do { open(*STDERR, ">&", $stderr_fh) or die "Could not capture STDERR: $!"; qx(psexec \\\\server netstat -n); }; seek($stderr_fh, 0, 0); my $stderr = do { local $/; <$stderr_fh> }; print "psexec stdout: $stdout\n"; print "-" x 60, "\n"; print "psexec stderr: $stderr\n";

        My previous code did not work for a couple of reasons:
        • The ">", \$stderr form of open failed on Win32 for some reason. Worked around using a temp file.
        • Can't localize *STDERR.

      I tried that, but it always has the header..

      PsExec v1.96 - Execute processes remotely Copyright (C) 2001-2009 Mark Russinovich Sysinternals - www.sysinternals.com