New-Task (modification of post by view diff)
embed code: <script type="text/javascript" src="http://PoshCode.org/embed/829"></script>download | new post
Allows for the creation of tasks in Microsoft Outlook from Windows PowerShell. The majority of task options available can be configured with the function.
- <#
- .SYNOPSIS
- Creates a task in Outlook
- .DESCRIPTION
- Allows for the creation of tasks in Microsoft Outlook from Windows PowerShell. The majority of task options available can be configured with the function.
- .LINK
- http://www.leeholmes.com/blog/GettingThingsDoneOutlookTaskAutomationWithPowerShell.aspx
- .EXAMPLE
- C:\PS>New-Task -Subject "Create PowerShell script to create Outlook tasks"
- Description
- -----------
- This example just a simple Outlook Task with the specified subject.
- .EXAMPLE
- C:\PS>New-Task -Subject "Create powershell script to create outlook calendar entries" -Categories "%PowerShell" -DueDate "2/01/2009" -Status "InProgress" -Display
- Description
- -----------
- This example demonstrates the creation of task using additional options. The '-display' parameter brings up the Outlook task form at the end to allow you make additional changes in the UI.
- .INPUTTYPE
- .RETURNVALUE
- .COMPONENT
- .ROLE
- .FUNCTIONALITY
- .PARAMETER Subject
- Sets the subject of the task.
- .PARAMETER Body
- Sets the body of the task.
- .PARAMETER Categories
- Sets the categories for the task. Comma seperate the values for multiple categories.
- .PARAMETER StartDate
- Sets the start date of the task. Must be in a format that can be converted to [datetime] object.
- .PARAMETER DueDate
- Sets the due date of the task. Must be in a format that can be converted to [datetime] object.
- .PARAMETER PercentComplete
- Sets the percent complete for the new task. Value must be an int from 0 to 100.
- .PARAMETER ReminderTime
- Sets the reminder time of the task. Must be in a format that can be converted to [datetime] object.
- .PARAMETER Status
- Sets the the status of the new task. Valid values are "Completed", "Deferred", "InProgress","Waiting"
- .PARAMETER Priority
- Sets the priority value of the new task. Valid values are "Low", "Medium", "High"
- .PARAMETER Display
- Displays the Outlook task form after saving.
- .NOTES
- Name: New-Task
- Author: Mark E. Schill
- Date Created: 01/24/2009
- Date Revised: 01/24/2009
- Version: 1.0
- History: 1.0 01/24/2009 - Initial Revision
- #>
- [CmdletBinding()]
- # TODO: Handle the status and priority
- param(
- [Parameter(Position=0, Mandatory=$true, ValueFromPipeline=$true)]
- [string]
- $Subject
- ,
- [Parameter(Mandatory=$false, ValueFromPipeline=$false)]
- [string]
- $Body
- ,
- # TODO: Be able to specify "today, tomorrow, next week, etc" and convert that to appropriate date.
- # http://refactormycode.com/codes/488-parse-relative-date
- [Parameter(Mandatory=$false, ValueFromPipeline=$false)]
- [DateTime]
- $StartDate
- ,
- # TODO: Be able to specify "today, tomorrow, next week, etc" and convert that to appropriate date.
- [Parameter(Mandatory=$false, ValueFromPipeline=$false)]
- [DateTime]
- $DueDate
- ,
- [Parameter(Mandatory=$false, ValueFromPipeline=$false)]
- [string]
- $Status
- ,
- [Parameter(Mandatory=$false, ValueFromPipeline=$false)]
- [string]
- $Priority
- ,
- [Parameter(Mandatory=$false, ValueFromPipeline=$false)]
- [int]
- $PercentComplete = 0
- ,
- [Parameter(Mandatory=$false, ValueFromPipeline=$false)]
- [DateTime]
- $ReminderTime
- ,
- [Parameter(Mandatory=$false, ValueFromPipeline=$false)]
- [string]
- $Categories
- ,
- [Parameter(Mandatory=$false, ValueFromPipeline=$false)]
- [switch]
- $Display
- )
- Begin
- {
- $olTaskItem = "olTaskItem" <# 3 #>
- $olFolderTasks = "olFolderTasks" <# 13 #>
- $Outlook = New-Object -ComObject Outlook.Application
- }
- Process
- {
- $Task = $Outlook.Application.CreateItem($olTaskItem)
- $ContainsError = $false
- $Task.Subject = $Subject
- $Task.PercentComplete = $PercentComplete
- $Task.Body = $Body
- if ( $Categories ) { $Task.Categories = $Categories }
- if ( $StartDate ) { $Task.StartDate = $StartDate }
- if ( $DueDate ) { $Task.DueDate = $DueDate }
- switch ( $Status )
- {
- "Completed"
- {
- $Task.Status = [Microsoft.Office.Interop.Outlook.OlTaskStatus]::olTaskComplete
- $Task.PercentComplete = 100 # Overrides PercentComplete if specified
- }
- "Deferred" { $Task.Status = [Microsoft.Office.Interop.Outlook.OlTaskStatus]::olTaskDeferred }
- "InProgress" { $Task.Status = [Microsoft.Office.Interop.Outlook.OlTaskStatus]::olTaskInProgress }
- "Waiting" { $Task.Status = [Microsoft.Office.Interop.Outlook.OlTaskStatus]::olTaskWaiting }
- default { $Task.Status = [Microsoft.Office.Interop.Outlook.OlTaskStatus]::TaskNotStarted }
- }
- switch ($Priority )
- {
- "Low" { $Task.Importance = [Microsoft.Office.Interop.Outlook.OlImportance]::olImportanceLow }
- "High" { $Task.Importance = [Microsoft.Office.Interop.Outlook.OlImportance]::olImportanceHigh }
- default { $Task.Importance = [Microsoft.Office.Interop.Outlook.OlImportance]::olImportanceNormal }
- }
- if ( $ReminderTime )
- {
- $Task.ReminderTime = $ReminderTime
- $Task.ReminderSet = $True
- }
- if ( -not $ContainsError)
- {
- $Task.Save()
- if ($Display ) { $Task.Display() }
- }
- }
- End
- {
- $Outlook = $Null
- }
Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.
PowerShell Code Repository