How to render a powershell WPF GUI to a video file

I need help trying to output a WPF GUI window to a rendered video (mp4) via Powershell. i assume the last line is what will need to be modified to output to the video instead of the GUI. i assume the video parameters will need to be added somewhere but im not sure what is needed yet. i guestimate the video will be 15 or 30 seconds long. I am ok if this is done with ShowUI as well. Ive been searching for days and i cannot find anything related. Thank you for the help!

 

 

Here is the code below:
<pre class=“default prettyprint prettyprinted”><span class=“com”>#JLo </span><span class=“com”>#Concept: turn rss and other realtime feeds info into animated videos </span><span class=“typ”>Add</span><span class=“pun”>-</span><span class=“typ”>Type</span><span class=“pun”>-</span><span class=“typ”>AssemblyName</span><span class=“pln”> presentationframework
cls

</span><span class=“pun”>[</span><span class=“pln”>xml</span><span class=“pun”>]</span><span class=“pln”>$XAML </span><span class=“pun”>=</span><span class=“pun”>@</span><span class=“str”>"
<Window
xmlns=“</span><span class=“pln”>http</span><span class=“pun”>:</span><span class=“com”>//schemas.microsoft.com/winfx/2006/xaml/presentation”</span><span class=“pln”>
xmlns</span><span class=“pun”>:</span><span class=“pln”>x</span><span class=“pun”>=</span><span class=“str”>“http://schemas.microsoft.com/winfx/2006/xaml”</span><span class=“typ”>Title</span><span class=“pun”>=</span><span class=“str”>“MainWindow”</span><span class=“typ”>Height</span><span class=“pun”>=</span><span class=“str”>“720”</span><span class=“typ”>Width</span><span class=“pun”>=</span><span class=“str”>“1280”</span><span class=“typ”>Background</span><span class=“pun”>=</span><span class=“str”>“White”</span><span class=“pun”>></span><span class=“pun”><</span><span class=“typ”>Grid</span><span class=“pun”>></span><span class=“pun”><</span><span class=“typ”>Label</span><span class=“pln”> x</span><span class=“pun”>:</span><span class=“typ”>Name</span><span class=“pun”>=</span><span class=“str”>“TopLabel”</span><span class=“typ”>HorizontalAlignment</span><span class=“pun”>=</span><span class=“str”>“Left”</span><span class=“typ”>VerticalAlignment</span><span class=“pun”>=</span><span class=“str”>“Top”</span><span class=“typ”>Height</span><span class=“pun”>=</span><span class=“str”>“360”</span><span class=“typ”>Width</span><span class=“pun”>=</span><span class=“str”>“1280”</span><span class=“pun”>></span><span class=“pun”><</span><span class=“typ”>Image</span><span class=“pln”> x</span><span class=“pun”>:</span><span class=“typ”>Name</span><span class=“pun”>=</span><span class=“str”>“logo”</span><span class=“typ”>Height</span><span class=“pun”>=</span><span class=“str”>“350”</span><span class=“typ”>Width</span><span class=“pun”>=</span><span class=“str”>“1270”</span><span class=“typ”>Source</span><span class=“pun”>=</span><span class=“str”>“http://www.johnjlopez.com/jlo.jpg”</span><span class=“pun”>/></span><span class=“pun”></</span><span class=“typ”>Label</span><span class=“pun”>></span><span class=“pun”><</span><span class=“typ”>Label</span><span class=“pln”> x</span><span class=“pun”>:</span><span class=“typ”>Name</span><span class=“pun”>=</span><span class=“str”>“BottomLeft”</span><span class=“typ”>Content</span><span class=“pun”>=</span><span class=“str”>“Label”</span><span class=“typ”>HorizontalAlignment</span><span class=“pun”>=</span><span class=“str”>“Left”</span><span class=“typ”>Margin</span><span class=“pun”>=</span><span class=“str”>“0,365,0,0”</span><span class=“typ”>VerticalAlignment</span><span class=“pun”>=</span><span class=“str”>“Top”</span><span class=“typ”>Height</span><span class=“pun”>=</span><span class=“str”>“325”</span><span class=“typ”>Width</span><span class=“pun”>=</span><span class=“str”>“635”</span><span class=“typ”>Background</span><span class=“pun”>=</span><span class=“str”>“#FF84C5C9”</span><span class=“typ”>Foreground</span><span class=“pun”>=</span><span class=“str”>“White”</span><span class=“typ”>FontSize</span><span class=“pun”>=</span><span class=“str”>“18”</span><span class=“pun”>/></span><span class=“pun”><</span><span class=“typ”>Label</span><span class=“pln”> x</span><span class=“pun”>:</span><span class=“typ”>Name</span><span class=“pun”>=</span><span class=“str”>“BottomRight”</span><span class=“typ”>Content</span><span class=“pun”>=</span><span class=“str”>“Label”</span><span class=“typ”>HorizontalAlignment</span><span class=“pun”>=</span><span class=“str”>“Left”</span><span class=“typ”>Margin</span><span class=“pun”>=</span><span class=“str”>“645,365,0,0”</span><span class=“typ”>VerticalAlignment</span><span class=“pun”>=</span><span class=“str”>“Top”</span><span class=“typ”>Height</span><span class=“pun”>=</span><span class=“str”>“325”</span><span class=“typ”>Width</span><span class=“pun”>=</span><span class=“str”>“635”</span><span class=“typ”>Background</span><span class=“pun”>=</span><span class=“str”>“white”</span><span class=“typ”>Foreground</span><span class=“pun”>=</span><span class=“str”>“black”</span><span class=“typ”>FontSize</span><span class=“pun”>=</span><span class=“str”>“18”</span><span class=“pun”>/></span><span class=“pun”></</span><span class=“typ”>Grid</span><span class=“pun”>></span><span class=“pun”></</span><span class=“typ”>Window</span><span class=“pun”>></span><span class=“str”>"@

$reader=(New-Object System.Xml.XmlNodeReader $xaml)
$Window=[Windows.Markup.XamlReader]::Load( $reader )

NEWSFEED

$url = “</span><span class=“pln”>http</span><span class=“pun”>:</span><span class=“com”>//feeds.chicagotribune.com/chicagotribune/news/” </span><span class=“pln”>
$array </span><span class=“pun”>=</span><span class=“typ”>Invoke</span><span class=“pun”>-</span><span class=“typ”>RestMethod</span><span class=“pln”> $url </span><span class=“com”>#| Select Title | Format-Table -AutoSize</span><span class=“pun”>[</span><span class=“kwd”>string</span><span class=“pun”>]</span><span class=“pln”>$a </span><span class=“pun”>=</span><span class=“str”>“NEWSn-------n”</span><span class=“pln”>
$BottomLeft </span><span class=“pun”>=</span><span class=“pln”> $Window</span><span class=“pun”>.</span><span class=“pln”>findname</span><span class=“pun”>(</span><span class=“str”>“BottomLeft”</span><span class=“pun”>)</span><span class=“pln”>
$a </span><span class=“pun”>+=</span><span class=“pln”> $</span><span class=“pun”>(</span><span class=“pln”>$array </span><span class=“pun”>|%{</span><span class=“pln”>$_</span><span class=“pun”>.</span><span class=“pln”>title</span><span class=“pun”>})</span><span class=“pun”>-</span><span class=“pln”>join </span><span class=“str”>“`n”</span><span class=“pln”>
$BottomLeft</span><span class=“pun”>.</span><span class=“typ”>Content</span><span class=“pun”>=</span><span class=“pln”> $a

</span><span class=“com”>#WEATHER FEED</span><span class=“com”>#Based from: </span><span class=“com”>#http://gallery.technet.microsoft.com/scriptcenter/PowerShell-Console-Weather-430a2eb7&lt;/span&gt;&lt;span class=“com”>#http://jdhitsolutions.com/blog/2010/07/powershell-weather-module/&lt;/span&gt;&lt;span class=“typ”>Function</span><span class=“typ”>Get</span><span class=“pun”>-</span><span class=“typ”>YahooWeather</span><span class=“pun”>{</span><span class=“pun”>[</span><span class=“pln”>cmdletbinding</span><span class=“pun”>()]</span><span class=“typ”>Param</span><span class=“pun”>(</span><span class=“pun”>[</span><span class=“pln”>parameter</span><span class=“pun”>(</span><span class=“typ”>ValueFromPipeLine</span><span class=“pun”>=</span><span class=“str”>‘True’</span><span class=“pun”>)]</span><span class=“pun”>[</span><span class=“kwd”>string</span><span class=“pun”>]</span><span class=“pln”>$ZipCode </span><span class=“pun”>=</span><span class=“str”>“60625”</span><span class=“pun”>)</span><span class=“typ”>Begin</span><span class=“pun”>{</span><span class=“pln”>
$Webclient </span><span class=“pun”>=</span><span class=“typ”>New</span><span class=“pun”>-</span><span class=“typ”>Object</span><span class=“typ”>Net</span><span class=“pun”>.</span><span class=“typ”>WebClient</span><span class=“pln”>
$Webclient</span><span class=“pun”>.</span><span class=“typ”>UseDefaultCredentials</span><span class=“pun”>=</span><span class=“pln”> $True
</span><span class=“pun”>}</span><span class=“typ”>Process</span><span class=“pun”>{</span><span class=“typ”>ForEach</span><span class=“pun”>(</span><span class=“pln”>$Zip </span><span class=“kwd”>in</span><span class=“pln”> $ZipCode</span><span class=“pun”>)</span><span class=“pun”>{</span><span class=“typ”>Try</span><span class=“pun”>{</span><span class=“pln”>
$weather </span><span class=“pun”>=</span><span class=“pun”>([</span><span class=“pln”>xml</span><span class=“pun”>]</span><span class=“pln”>$webclient</span><span class=“pun”>.</span><span class=“typ”>DownloadString</span><span class=“pun”>(</span><span class=“str”>“http://weather.yahooapis.com/forecastrss?p=$Zip”</span><span class=“pun”>)).</span><span class=“pln”>rss</span><span class=“pun”>.</span><span class=“typ”>Channel</span><span class=“pln”>
$weatherhash </span><span class=“pun”>=</span><span class=“pun”>@{</span><span class=“typ”>Sunrise</span><span class=“pun”>=</span><span class=“pln”> $weather</span><span class=“pun”>.</span><span class=“pln”>astronomy</span><span class=“pun”>.</span><span class=“typ”>Sunrise</span><span class=“typ”>Sunset</span><span class=“pun”>=</span><span class=“pln”> $weather</span><span class=“pun”>.</span><span class=“pln”>astronomy</span><span class=“pun”>.</span><span class=“typ”>Sunset</span><span class=“typ”>Temperature</span><span class=“pun”>=</span><span class=“str”>“{0}{1}F”</span><span class=“pun”>-</span><span class=“pln”>f $weather</span><span class=“pun”>.</span><span class=“typ”>Item</span><span class=“pun”>.</span><span class=“typ”>Condition</span><span class=“pun”>.</span><span class=“typ”>Temp</span><span class=“pun”>,[</span><span class=“kwd”>char</span><span class=“pun”>]</span><span class=“lit”>176</span><span class=“typ”>Conditions</span><span class=“pun”>=</span><span class=“pln”> $weather</span><span class=“pun”>.</span><span class=“typ”>Item</span><span class=“pun”>.</span><span class=“typ”>Condition</span><span class=“pun”>.</span><span class=“typ”>Text</span><span class=“typ”>City</span><span class=“pun”>=</span><span class=“pln”> $weather</span><span class=“pun”>.</span><span class=“typ”>Location</span><span class=“pun”>.</span><span class=“typ”>City</span><span class=“typ”>State</span><span class=“pun”>=</span><span class=“pln”> $weather</span><span class=“pun”>.</span><span class=“typ”>Location</span><span class=“pun”>.</span><span class=“typ”>Region</span><span class=“typ”>Country</span><span class=“pun”>=</span><span class=“pln”> $weather</span><span class=“pun”>.</span><span class=“typ”>Location</span><span class=“pun”>.</span><span class=“typ”>Country</span><span class=“typ”>WindChill</span><span class=“pun”>=</span><span class=“pln”> $weather</span><span class=“pun”>.</span><span class=“typ”>Wind</span><span class=“pun”>.</span><span class=“typ”>Chill</span><span class=“typ”>WindSpeed</span><span class=“pun”>=</span><span class=“pln”> $weather</span><span class=“pun”>.</span><span class=“typ”>Wind</span><span class=“pun”>.</span><span class=“typ”>Speed</span><span class=“typ”>LastUpdated</span><span class=“pun”>=</span><span class=“pun”>[</span><span class=“pln”>datetime</span><span class=“pun”>]</span><span class=“str”>“$(($weather.LastBuildDate | Select-String -pattern “</span><span class=“pln”>\w</span><span class=“pun”>+,</span><span class=“pln”>\s\d</span><span class=“pun”>{</span><span class=“lit”>1</span><span class=“pun”>,</span><span class=“lit”>2</span><span class=“pun”>}</span><span class=“pln”>\s\w</span><span class=“pun”>+</span><span class=“pln”>\s\d</span><span class=“pun”>{</span><span class=“lit”>4</span><span class=“pun”>}</span><span class=“pln”>\s\d</span><span class=“pun”>{</span><span class=“lit”>1</span><span class=“pun”>,</span><span class=“lit”>2</span><span class=“pun”>}:</span><span class=“pln”>\d</span><span class=“pun”>{</span><span class=“lit”>1</span><span class=“pun”>,</span><span class=“lit”>2</span><span class=“pun”>}</span><span class=“pln”>\s\w</span><span class=“pun”>{</span><span class=“lit”>2</span><span class=“pun”>}</span><span class=“str”>”).matches[0].value)”</span><span class=“typ”>HiTemp</span><span class=“pun”>=</span><span class=“str”>“{0}{1}F”</span><span class=“pun”>-</span><span class=“pln”>f $Weather</span><span class=“pun”>.</span><span class=“pln”>item</span><span class=“pun”>.</span><span class=“pln”>forecast</span><span class=“pun”>[</span><span class=“lit”>0</span><span class=“pun”>].</span><span class=“typ”>High</span><span class=“pun”>,[</span><span class=“kwd”>char</span><span class=“pun”>]</span><span class=“lit”>176</span><span class=“typ”>LowTemp</span><span class=“pun”>=</span><span class=“str”>“{0}{1}F”</span><span class=“pun”>-</span><span class=“pln”>f $Weather</span><span class=“pun”>.</span><span class=“pln”>item</span><span class=“pun”>.</span><span class=“pln”>forecast</span><span class=“pun”>[</span><span class=“lit”>0</span><span class=“pun”>].</span><span class=“typ”>Low</span><span class=“pun”>,[</span><span class=“kwd”>char</span><span class=“pun”>]</span><span class=“lit”>176</span><span class=“pun”>}</span><span class=“pln”>
$weatherobject </span><span class=“pun”>=</span><span class=“typ”>New</span><span class=“pun”>-</span><span class=“typ”>Object</span><span class=“typ”>PSObject</span><span class=“pun”>-</span><span class=“typ”>Property</span><span class=“pln”> $weatherhash
$weatherobject</span><span class=“pun”>.</span><span class=“typ”>PSTypeNames</span><span class=“pun”>.</span><span class=“typ”>Insert</span><span class=“pun”>(</span><span class=“lit”>0</span><span class=“pun”>,</span><span class=“str”>“Weather.Info”</span><span class=“pun”>)</span><span class=“typ”>Write</span><span class=“pun”>-</span><span class=“typ”>Output</span><span class=“pln”> $weatherobject
</span><span class=“pun”>}</span><span class=“typ”>Catch</span><span class=“pun”>{</span><span class=“typ”>Write</span><span class=“pun”>-</span><span class=“typ”>Warning</span><span class=“str”>“$($Error[0])”</span><span class=“pun”>}</span><span class=“pun”>}</span><span class=“pun”>}</span><span class=“pun”>}</span><span class=“pln”>
$weather </span><span class=“pun”>=</span><span class=“kwd”>get</span><span class=“pun”>-</span><span class=“pln”>yahooweather </span><span class=“lit”>60601</span><span class=“pun”>[</span><span class=“kwd”>string</span><span class=“pun”>]</span><span class=“pln”>$B </span><span class=“pun”>=</span><span class=“str”>“WEATHERn-----------n”</span><span class=“pln”>
$b </span><span class=“pun”>+=</span><span class=“pln”> $weather</span><span class=“pun”>|</span><span class=“kwd”>select</span><span class=“typ”>City</span><span class=“pun”>,</span><span class=“typ”>Temperature</span><span class=“pun”>,</span><span class=“typ”>HiTemp</span><span class=“pun”>,</span><span class=“typ”>LowTemp</span><span class=“pun”>,</span><span class=“typ”>WindChill</span><span class=“pun”>,</span><span class=“typ”>Sunset</span><span class=“pun”>,</span><span class=“typ”>Conditions</span><span class=“pun”>|</span><span class=“typ”>Out</span><span class=“pun”>-</span><span class=“kwd”>string</span><span class=“com”>#-join “`n”</span><span class=“pln”>
$Bottomright </span><span class=“pun”>=</span><span class=“pln”> $Window</span><span class=“pun”>.</span><span class=“pln”>findname</span><span class=“pun”>(</span><span class=“str”>“BottomRight”</span><span class=“pun”>)</span><span class=“pln”>
$Bottomright</span><span class=“pun”>.</span><span class=“typ”>Content</span><span class=“pun”>=</span><span class=“pln”> $b

$Window</span><span class=“pun”>.</span><span class=“typ”>ShowDialog</span><span class=“pun”>()</span><span class=“pun”>|</span><span class=“kwd”>out</span><span class=“pun”>-</span><span class=“kwd”>null

This is also posted at:
http://stackoverflow.com/questions/17283616/how-to-render-a-powershell-wpf-gui-to-a-video-file

</span>

You might want to attach that instead of trying to paste it… but in general you’re probably going to get more love on StackOverflow in terms of an answer. WPF is accessible from PowerShell, but it’s not really PowerShell itself. You’ll probably find less knowledge about WPF here, unfortunately.

I cant find any buttons to edit the original post.If you want, feel free to delete the entire code section. it will still be in the stack overflow post.

Ive searched the net for awhile to find an answer and i haven’t found it yet. I’ve also reached out to Doug Finke who recommended I post in both these forums. The hard part of all this is exactly what you said - its a combo of both powershell and WPF.

Thanks again,