param ( $Path, $ItemCount = 100 ) function MakeRss { # Creates an RSS feed # Parameter input is for "site": Path, Title, Url, Description # Pipeline input is for feed items: hashtable with Title, Link, Author, Description, and pubDate keys param ( $Path = "$( throw 'Path is a mandatory parameter.' )", $Title = "Site Title", $homePageUrl = "http://$( $env:computername )", $Description = "Description of site" ) Begin { # feed metadata $encoding = [System.Text.Encoding]::UTF8 $writer = New-Object System.Xml.XmlTextWriter( $Path, $encoding ) $writer.WriteStartDocument() $writer.WriteStartElement( "rss" ) $writer.WriteAttributeString( "version", "2.0" ) $writer.WriteStartElement( "channel" ) $writer.WriteElementString( "title", $Title ) $writer.WriteElementString( "link", $Url ) $writer.WriteElementString( "description", $Description ) } Process { # Construct feed items $writer.WriteStartElement( "item" ) $writer.WriteElementString( "title", $_.title ) $writer.WriteElementString( "link", $_.link ) $writer.WriteElementString( "author", $_.author ) $writer.WriteStartElement( "description" ) $writer.WriteRaw( "" ) $writer.WriteEndElement() $writer.WriteElementString( "pubDate", $_.pubDate.toString( 'r' ) ) $writer.WriteElementString( "guid", $homePageUrl + "/" + [guid]::NewGuid() ) $writer.WriteEndElement() } End { $writer.WriteEndElement() $writer.WriteEndElement() $writer.WriteEndDocument() $writer.Close() } } # Connect-VIServer -Server "localhost" $Title = "VirtualCenter events for $( $env:computername )" $Url = "https://$( $env:computername )" $Description = "Error log for VirtualCenter service" if ( !$Path ) { $appData = [system.Environment]::GetFolderPath('CommonApplicationData') $docRoot = $appData + "\VMware\VMware VirtualCenter\docRoot" $Path = $docRoot + "\events.rss" } # Retrieve error events $event = Get-VIEvent -MaxSamples $ItemCount -Types 'Error' $feedItems = @() $event | ForEach-Object { $item = @{} $item.Title = $_.key $item.Link = "https://$( $env:computername )" $item.Author = $_.username $item.Description = $_.fullFormattedMessage $item.pubDate = $_.createdTime $feedItems += $item } $feedItems | makeRss -title $Title -url $Url -description $Description -path $Path