function Export-MediaFromPptx($pptxFile) { [void] [System.Reflection.Assembly]::LoadFrom("C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\WindowsBase.dll") $pkg = [System.IO.Packaging.Package]::Open($pptxFile) $mediaDirectory = [System.IO.Path]::GetDirectoryName($pptxFile) + "\" + [System.IO.Path]::GetFileName($pptxFile) + "_media" md $mediaDirectory | out-null foreach ($mediaPart in ($pkg.GetParts() | where { $_.Uri.ToString().StartsWith("/ppt/media/") })) { $sourceStream = $mediaPart.GetStream() [byte[]]$buffer = new-object byte[] $sourceStream.Length [void]$sourceStream.Read($buffer, 0, $sourceStream.Length) $sourceStream.Close() $targetFileName = $mediaDirectory + "\" + $mediaPart.Uri.ToString().Remove(0, "/ppt/media/".Length) [System.IO.File]::WriteAllBytes($targetFileName, $buffer) } $pkg.Close() }