function Install-DbgHelp { param ( [Parameter(Mandatory=$true, Position=0)] [string] $DbgHelpBaseDir, [Parameter()] [string[]] $DbgHelpFiles = @('dbghelp.dll','symsrv.dll','srcsrv.dll'), [Parameter()] [switch] $Cleanup ) $WinSdkTemp = "$Env:TEMP\winsdk" $WinSdkSetupExe = "$WinSdkTemp\winsdksetup.exe" $WinSdkSetupUrl = "https://go.microsoft.com/fwlink/?linkid=2120843" New-Item -Path $WinSdkTemp -ItemType Directory -ErrorAction SilentlyContinue | Out-Null Invoke-WebRequest -Uri $WinSdkSetupUrl -OutFile $WinSdkSetupExe -UseBasicParsing $WinSdkLayoutDir = "$WinSdkTemp\layout" $WinSdkSetupLogFile = "$WinSdkTemp\winsdksetup.log" Start-Process -FilePath $WinSdkSetupExe -ArgumentList @( '/features', 'OptionId.WindowsDesktopDebuggers', '/q', '/norestart', '/layout', $WinSdkLayoutDir, '/l', $WinSdkSetupLogFile) -Wait $WinSdkExtractDir = "$WinSdkTemp\extract" Get-Item "$WinSdkLayoutDir\Installers\*.msi" | ForEach-Object { Start-Process -FilePath msiexec -ArgumentList @('/a', "`"$($_.FullName)`"", '/qb', "TARGETDIR=`"$WinSdkExtractDir`"") -Wait } $WinSdkDebuggersDir = "$WinSdkExtractDir\Windows Kits\10\Debuggers" Get-Item "$WinSdkDebuggersDir\*\dbghelp.dll" | ForEach-Object { $Source = $_.Directory $Architecture = $_.Directory.Name $Destination = "$DbgHelpBaseDir\$Architecture" New-Item -Path $Destination -ItemType Directory -ErrorAction SilentlyContinue | Out-Null $DbgHelpFiles | ForEach-Object { Copy-Item (Join-Path $Source $_) (Join-Path $Destination $_) } } if ($Cleanup) { Remove-Item -Path $WinSdkTemp -Recurse -Force | Out-Null } } # Install-DbgHelp "C:\DbgHelp"