As sessions make their way to Channel 9, we can download them using this PowerShell script.
Download All Sessions in SD Quality
$feedUrl = 'http://s.ch9.ms/Events/Build/2016/RSS' [Environment]::CurrentDirectory=(Get-Location -PSProvider FileSystem).ProviderPath function Get-Media { [CmdletBinding()] param ( [Object] $url, [Object] $title ) $u = New-Object System.Uri($url) $name = $title $extension = [System.IO.Path]::GetExtension($u.Segments[-1]) $fileName = $name + $extension $fileName = $fileName -replace "’", '' $fileName = $fileName -replace "\?", '' $fileName = $fileName -replace ":", '' $fileName = $fileName -replace '/', '' $fileName = $fileName -replace ",", '' $fileName = $fileName -replace '"', '' $fileName if (Test-Path($fileName)) { Write-Host 'Skipping file, already downloaded' -ForegroundColor Yellow } else { Invoke-WebRequest $url -OutFile $fileName } } $feed=[xml](New-Object System.Net.WebClient).DownloadString($feedUrl) foreach($i in $feed.rss.channel.item) { foreach($m in $i.group){ foreach($u in $m.content ` | Where-Object { ` $_.url -like '*mid.mp4' ` } | Select-Object -Property @{Name='url'; Expression = {$_.url}}, ` @{Name='title'; Expression = {$i.title}}) { Get-Media -url $u.url -title $u.title } } } # Find and Download Keynotes foreach($i in $feed.rss.channel.item) { foreach($m in $i.group){ foreach($u in $m.content ` | Where-Object { ` $_.url -like '*KEY0*' ` -and $_.type -eq 'video/mp4' ` } ` | Select-Object -Unique ` | Select-Object -Property @{Name='url'; Expression = {$_.url}}, ` @{Name='title'; Expression = {$i.title}}) { Get-Media -url $u.url -title $u.title } } }