Powershell to send a log file

Is it possible to use powershell to read a log file and send out the content to administator ?

Can I put the powershell in a batch file and execute it after running a program ?


Tks
AXISHKAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

QlemoBatchelor, Developer and EE Topic AdvisorCommented:
Yes, you can do that. But we will need some more background info: Is the log file a simple text file? And do you mean to send it as email attachment? If both answers are yes:
@echo off
Rem you commands here
powershell -command "send-MailMessage -From me@here.com -To You@There.Com -SmtpServer mx.there.com -Subject 'Log file' -Attachments 'C:\Logfiles\ThisLogfile.txt'"

Open in new window

0
AXISHKAuthor Commented:
Tks.

A log file will be generated when the program completes. I need to dump the content and send to administrator, rather than attach it as a attachment.

Afterwards, the log will be renamed to , say yyyymmdd.log and create a new one, mylog.txt.

Is it too complicated for powershell to archive this ?  Tks
0
QlemoBatchelor, Developer and EE Topic AdvisorCommented:
That's a perfect task for running PowerShell. I would recommend to run only PS here, even the program call.
# PowerShell-only code
push-location C:\Path\To\Your\Logfile\

# this creates mylog.txt in the folder noted above
& "C:\Path\To\Your\Application\Something.exe"

Send-MailMessage -From me@here.com -To You@There.Com -SmtpServer mx.there.com -Subject 'Log file' -BodyAsHTML -Body ((get-content mylog.txt) -join '<br>')

Rename-Item mylog.txt ((get-date -format yyyymmdd)+'.log')

Open in new window

0
ON-DEMAND: 10 Easy Ways to Lose a Password

Learn about the methods that hackers use to lift real, working credentials from even the most security-savvy employees in this on-demand webinar. We cover the importance of multi-factor authentication and how these solutions can better protect your business!

AXISHKAuthor Commented:
Tks. Get a bit complicated for the log file.

After running the program, the name of the log file is myLog 20141025 233211.

How to modify the powershell such that
1. it will loop through all log file starting with "myLog".
2. For each loop, read the content of the log file and send it out through email.
3. Delete the log fiel.

Thanks again.
0
QlemoBatchelor, Developer and EE Topic AdvisorCommented:
I'm not sure I understand you correctly, but I assume there is a "mylog.txt" and optionally several "mylog 2014*.txt".
The script just uses the trailing text to add it to the subject line, so you'll not loose date/time info. The current log will be posted with the current date and time.
# PowerShell-only code
push-location C:\Path\To\Your\Logfile\

# this creates mylog*.txt in the folder noted above
& "C:\Path\To\Your\Application\Something.exe"

get-childitem 'mylog*.txt' | % {
  $date = $_.BaseName -replace 'mylog'
  if ($date -eq "") { $date = get-date -format 'yyyymmdd hhMMss' }
  Send-MailMessage -From me@here.com -To You@There.Com -SmtpServer mx.there.com -Subject "Log file of $date"' -BodyAsHTML -Body ((get-content $_) -join '<br>')
  Remove-Item $_
}

Open in new window

0
AXISHKAuthor Commented:
Tks. The content of the log file can't be displayed properly. Chinese chars are displayed as "????". Any idea ?


Tks
0
QlemoBatchelor, Developer and EE Topic AdvisorCommented:
You should be more precise. Is the log file in Chinese, and the email can't display that, or is the log file standard text and displaying in strange languages?
0
AXISHKAuthor Commented:
The Chinese chars can be displayed properly in the log file. However, the content in the email shows as "????" ...

Tks
0
QlemoBatchelor, Developer and EE Topic AdvisorCommented:
I didn't expect to see any text file requiring Unicode encoding. In future, whenever you ask a question here involving to treat text files, emphasize the need to keep Chinese characters.

I'm not experienced with HTML code and Chinese characters, I guess we need to add Encoding tags in the generated HTML body for being able to properly display them. I'll add more Topic Areas to reach Experts more versed in that.
0
AXISHKAuthor Commented:
I've requested that this question be closed as follows:

Accepted answer: 0 points for AXISHK's comment #a40404671

for the following reason:

Tks
0
QlemoBatchelor, Developer and EE Topic AdvisorCommented:
This works for me with a mock-up Simplified Chinese logfile:
# PowerShell-only code
push-location C:\Path\To\Your\Logfile\

# this creates mylog*.txt in the folder noted above
& "C:\Path\To\Your\Application\Something.exe"

get-childitem 'mylog*.txt' | % {
  $date = $_.BaseName -replace 'mylog'
  if ($date -eq "") { $date = get-date -format 'yyyymmdd hhMMss' }
  Send-MailMessage -From me@here.com -To You@There.Com -SmtpServer mx.there.com -Subject "Log file of $date"' -BodyAsHTML -Body ((get-content $_) -join '<br>') -Encoding ([System.Text.Encoding]::Unicode)
  Remove-Item $_
}

Open in new window

You might have to change Unicode to UTF8 or UTF32, depending on the log file encoding.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
AXISHKAuthor Commented:
Tks
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Powershell

From novice to tech pro — start learning today.