How to run a batch file in power shell and tell if it generates error

If I execute a batch file from Power Shell, how can I tell if it errors?
Delta7428Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
footechConnect With a Mentor Commented:
When you run an external command within PowerShell, you can get the result code it returned by looking at the automatic variable $LASTEXITCODE.  Typically programs return a 0 if there was no error.
0
 
tsaicoCommented:
Not exactly through powershell, but I always put an output to a TXT command for all the results in my batches for this reason.
0
 
Delta7428Author Commented:
Can I capture the results from the screen when the powershell script runs to a text file?
0
Improved Protection from Phishing Attacks

WatchGuard DNSWatch reduces malware infections by detecting and blocking malicious DNS requests, improving your ability to protect employees from phishing attacks. Learn more about our newest service included in Total Security Suite today!

 
Dan CraciunIT ConsultantCommented:
yes, with
| Out-file "log.txt"
0
 
Delta7428Author Commented:
Dan, can I specify the log file in the script? When I specify it at the command line, I get an empty log file.  But need to be able to specify it in the script.

footech, This is what I really need.  Can I get $lastexitcode to write to a text file from the script?


script.ps1
-------------------
c:\test\batch.bat
//write last exit code to text file
0
 
footechCommented:
It's just a variable.  You can write it's contents to a file just like any other string (e.g. piping it to Add-Content, Out-File, or other commands).
0
 
Dan CraciunConnect With a Mentor IT ConsultantCommented:
You can do script.ps1 | Out-file "log.txt" and if your bat produces output you'll find it in "log.txt".

It's really up to you, the programmer, to treat the errors and send messages.
You can start by removing the traditional @echo off.
0
 
Delta7428Author Commented:
Thanks.  I got what I need for the beginnings of my first PS script:

C:\Test\test.bat
$myfile = "c:\Test\log.txt"
Get-Date | Out-File $myfile -append
$lastexitcode | Out-File $myfile -append

Thanks!   Points coming!
0
 
Dan CraciunIT ConsultantCommented:
Just as a curiosity: if you're learning powershell, why are you learning how to keep using bat files? :)

I would think a better learning exercise would be to transform your bat into a true powershell script.

my 2ยข
0
 
Delta7428Author Commented:
I agree.  The call to the batch file will be replaced by calling an exe file.  This is just a test script to get me started coding.
Thanks again
0
 
footechCommented:
BTW, it's great to see someone new to PS scripting asking how to do something vs. just "please write a script that does this", so kudos to you.
I think you'll find quite a few people in the PowerShell TA here that are willing to explain things when you have questions.
0
 
Delta7428Author Commented:
Thanks footech!  I'm looking forward to my journey through PowerShell.  I love my experts here.
0
 
tsaicoCommented:
Second on that!  I troll the forum all the time reading other people's questions and the responses...
0
 
Delta7428Author Commented:
:)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.