How to fire off an exe and not wait for it to return

This topic contains 0 replies, has 1 voice, and was last updated by  Forums Archives 5 years, 11 months ago.

  • Author
    Posts
  • #5928

    by seanthehulk at 2012-10-04 11:04:12

    I am in the process of converting some of my server side VBScripts to PowerShell. One of these scripts copies a file down to the remote machine and then uses psexec to remotely execute that file with the administrator context.

    So I have a couple questions.

    Why is it when I execute something like nslookup I get back an array of strings. But when I execute psexec, I can't seem to capture what its writing to the console?

    Secondly, is there a way to replicate VBScripts WshShell.Run Method where bWaitOnReturn = False? If I can't capture and parse what PSExec is doing, then I would rather just fire it off and hope all goes well.

    Is there any way to not have the console capture what psexec is doing?

    Is there a better way to execute psexec then Invoke-Expression?

    What I am currently doing:
    $strCMD = "psexec.exe -accepteula -s -d \\$strFQDN C:\Windows\$strClientFolder\$strServerFile"
    Invoke-Expression -Command $strCMD

    An Environment Disclaimer:
    We still have many Windows XP Machines and PowerShell has unfortunately not been deployed to them.

    Thank you

    by JeffH at 2012-10-04 13:07:34

    Powershell remoting would definitely be easier, if you could deploy PS v2 to the XP boxes, but that doesn't sound likely. I haven't tried PSExec in PowerShell but it may be that it doesn't write to StdOut. The only thing I can think for you to try is using Start-Process. In the mean time, I'll have to play with PSExec in PowerShell.

    by JeffH at 2012-10-04 13:13:39

    Using Invoke-Expression I was able to at least save the console output.

    invoke-expression "c:\scripts\psexec \\jdhit-dc01 ipconfig" | out-file c:\work\out.txt

    You could parse the text file I guess then.

    by JeffH at 2012-10-04 13:18:42

    Actually, this also works:

    c:\scripts\psexec \\jdhit-dc01 ipconfig | out-file c:\work\b.txt

    by JeffH at 2012-10-04 13:28:51

    Finally, depending on what you need to do with the results, you might be able to do it directly from the output.

    PS C:\> $results = c:\scripts\psexec \\jdhit-dc01 nbtstat -n | where {$_ -match "Unique"} | foreach {$data = $_.Trim().Split() | where {$_} ; New-Object psobject -property @{Name=$data[0];Type=$data[1]}}

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

    Starting nbtstat on jdhit-dc01... jdhit-dc01...
    nbtstat exited on jdhit-dc01 with error code 0.
    PS C:\>
    PS C:\> $results

    Name Type
    ---- ----
    JDHIT-DC01 <00>
    JDHIT-DC01 <20>
    JDHITSOLUTIONS <1B>

You must be logged in to reply to this topic.