PowerShell Cookbook

Twitter Updates

    follow me on Twitter

    Search

    Categories

     

    On this page

    Jeffrey Snover's Monad TechEd Presentation ... now by Webcast

    Archive

    Blogroll

    Disclaimer
    I work for Microsoft.

    The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

    RSS 2.0 | Atom 1.0 | CDF

    Send mail to the author(s) E-mail

    Total Posts: 235
    This Year: 12
    This Month: 0
    This Week: 0
    Comments: 634

    Sign In

     Monday, June 27, 2005
    Tuesday, June 28, 2005 6:35:45 AM (Pacific Daylight Time, UTC-07:00) ( )

    If you were one of the many that missed Jeffrey's standing-room-only presentations at TechEd, the kind folks at TechNet feel your pain. They've decided to host a series of "Best of TechEd" webcasts, and our two presentations are among them. If you want to learn more about the capabilities of Monad, be sure to check these out.

    Session 1: Next Generation Command Line Scripting with Monad (Part 1 of 2) (Level 300)
    This session provides an architectural overview of Monad, and begins to introduce many of its powerful features.
    http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032277850&EventCategory=4&culture=en-US&CountryCode=US

    Session 2: Next Generation Command Line Scripting with Monad (Part 2 of 2) (Level 300)
    This session discusses some of the advanced scripting constructs, such as script blocks, dedicated streams, ubiquitous parameters, errors, exceptions, debugging, and tracing.
    http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032277852&EventCategory=4&culture=en-US&CountryCode=US

     

    Now, I would be remiss without including something for the hard-core geeks that already have Monad installed:

    MSH C:\Temp >$organizer = "http://go.microsoft.com/fwlink/?linkid=41781"
    MSH C:\Temp >$summary = "Monad TechNet Webcast"
    MSH C:\Temp >$description = "Next Generation Command Line Scripting with Monad (Part 1 of 2)"
    MSH C:\Temp >$location = "
    http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032277850&EventCategory=4&culture=en-US&CountryCode=US"
    MSH C:\Temp >$start = [DateTime]::Parse("Wednesday, August 03, 2005 09:30 AM")
    MSH C:\Temp >$end = $start.AddHours(1).AddMinutes(30)
    MSH C:\Temp >.\new-calendaritem $organizer $start $end $summary $description $location -out:TechEd_1.ics
    MSH C:\Temp >
    MSH C:\Temp >$description = "Next Generation Command Line Scripting with Monad (Part 2 of 2)"
    MSH C:\Temp >$start = [DateTime]::Parse("Wednesday, August 10, 2005 9:30 AM ")
    MSH C:\Temp >$end = $start.AddHours(1).AddMinutes(30)
    MSH C:\Temp >$location = "
    http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032277852&EventCategory=4&culture=en-US&CountryCode=US"
    MSH C:\Temp >.\new-calendaritem $organizer $start $end $summary $description $location -out:TechEd_2.ics
    MSH C:\Temp >
    MSH C:\Temp >.\TechEd_1.ics; .\TechEd_2.ics


    ## new-calendaritem.msh
    ## Create a new calendar item using the iCal (.ics) calendar format
    ## new-calendaritem -organizer:"
    http://go.microsoft.com/fwlink/?linkid=41781" -start:$([DateTime]::Now) -summary:"Monad TechNet Webcast" -description:"Monad TechNet Webcast: Next Generation Command Line Scripting with Monad (Part 1 of 2) (Level 300)" -location:"http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032277850&EventCategory=4&culture=en-US&CountryCode=US" -out:output.ics

    param(
     [string] $organizer = "",
     [DateTime] $start = $(throw "Please specify a start time."),
     [DateTime] $end = $start.AddMinutes(30),
     [string] $summary = $(throw "Please provide a meeting summary."),
     [string] $description = "",
     [string] $location = $(throw "Please provide a meeting location."),
     [string] $out
         )


    ## We want to convert the times to Universal, so that we can be unequivocal about
    ## when they start.  The RFC supports appointments in the local time zone (ie: lunch,)
    ## but that's not very helpful when we're sharing most appointments.
    ## All input times will be assumed to be local times
    $utcStart = $start.ToUniversalTime()
    $utcEnd = $end.ToUniversalTime()

    ## Convert them to the ICS format
    $dtStart = $utcStart.ToString("yyyyMMddTHHmmssZ")
    $dtEnd = $utcEnd.ToString("yyyyMMddTHHmmssZ")

    ## A very simple calendar item
    $template = @"
    BEGIN:VCALENDAR
    BEGIN:VEVENT
    ORGANIZER:$organizer
    DTSTART:$dtStart
    DTEND:$dtEnd
    SUMMARY:$summary
    DESCRIPTION:$description
    LOCATION:$location
    END:VEVENT
    END:VCALENDAR
    "@

    ## Dump it out to the file or the screen
    if($out)
    {
       $template | out-file -encoding:ascii $out
    }
    else
    {
       $template
    }

     

    [Edit: Monad has now been renamed to Windows PowerShell. This script or discussion may require slight adjustments before it applies directly to newer builds.]