Send email with Powershell script, schedule script with Windows Task Scheduler

Tags: powershell, SMTP

Here is a set of samples I used to do a common task in my scripting life.  This go around I wanted to use Powershell. 

 

A) Create a script to send emails in powershell
----------------------------------------------------
1) Open Powershell type set-executionpolicy Unrestricted 
'This allows scripts to be run'
'You'll want to also look at using RemoteSigned
Type

2) Type Notepad myscript.ps1


3) Paste sample code and save in myscript.ps1


$SmtpClient = new-object system.net.mail.smtpClient
$SmtpServer = "localhost"
$SmtpClient.host =
$SmtpServer
 

$From = "Friendly Reminder <User@example.com>"
$To = User2@example.com
$Title = "Subject Matter"
$Body = "Body Text" 
$SmtpClient.Send($from,$to,$title,$Body)  

B) Testing Script
----------------------------------------------------
1) Type ./myscript.ps1
'Verify you receive the email.  

C) How to schedule a powershell script in Windows Task Scheduler
----------------------------------------------------
1) Create a new scheduled task.

'The syntax is to execute the script is:
powershell -command "& 'SomeDir\myScript.ps1'" 

2) Set the script to run as your normal task scheduler accounts.

 

3) Execute task, verify you receive the email

Hope this helps,

Steve

5 Comments

  • http:// said

    <P>I am trying to use the same command in process can you please help me out here</P>
    <P>Dim oProcess As Process = New Process</P>
    <P>oProcess.StartInfo.UseShellExecute = False</P>
    <P>oProcess.StartInfo.RedirectStandardOutput = True</P>
    <P>oProcess.StartInfo.CreateNoWindow = False</P>
    <P>oProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal</P>
    <P>oProcess.StartInfo.FileName = "powershell.exe"</P>
    <P>Dim sArguments as string = powershell -command "&amp; 'SomeDir\myScript.ps1'"</P>
    <P>oProcess.Start()</P>
    <P>oProcess.WaitForExit(1000 * iTimeOutSec)</P>

  • Anil said

    I get the following error


    C:\WINDOWS\system32\WindowsPowerShell\v1.0>powershell.exe c:\myscript.ps1
    The term 'akumar@gs1uk.org' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spel
    ling of the name, or if a path was included, verify that the path is correct and try again.
    At C:\myscript.ps1:7 char:23
    + $To = akumar@gs1uk.org <<<<
    + CategoryInfo : ObjectNotFound: (akumar@gs1uk.org:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

    Exception calling "Send" with "4" argument(s): "The parameter 'to' cannot be an empty string.
    Parameter name: to"
    At C:\myscript.ps1:10 char:17
    + $SmtpClient.Send <<<< ($from,$to,$title,$Body)
    + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

  • CK said

    @Anil - the $To email address needs to be in quotation marks, eg:

    $To = "akumar@abcdefg.org"

  • mahmoud said

    trying to send an email using powershell. I have a working code but when I substitute "From" and "To" to variables like "From=$source
    "To=$destination
    I get an error

    working code is

    $messageParameters = @{
    smtpServer = “smtphost”
    From = md@yahoo.com
    To = md@yahoo.com
    Subject = “You Submitted a Job”
    Body = “Your Job Chain is submitted successfully”
    }
    Thanks for help :)

Add a Comment