function Write-MiniDumpDBGHelp
($process,
$dumpFilePath){
$MethodDefinition = @'
[DllImport("DbgHelp.dll",
CharSet = CharSet.Unicode)]
public static extern
bool MiniDumpWriteDump(
IntPtr hProcess,
uint processId,
IntPtr hFile,
uint dumpType,
IntPtr expParam,
IntPtr userStreamParam,
IntPtr callbackParam
);
'@
$dbghelp =
Add-Type -MemberDefinition
$MethodDefinition -Name
'dbghelp' -Namespace
'Win32' -PassThru
$miniDumpWithFullMemory = [UInt32] 2
$processId =
$process.Id
$processName = $process.Name
$processHandle = $process.Handle
$processFileName = "$($processName).dmp"
$processDumpPath = "$dumpFilePath\$processFileName"
$fileStream = New-Object IO.FileStream($processDumpPath, [IO.FileMode]::Create)
try{
$result
= $dbghelp::MiniDumpWriteDump($processHandle,$processId,$fileStream.SafeFileHandle.DangerousGetHandle(),$miniDumpWithFullMemory,[IntPtr]::Zero,[IntPtr]::Zero,[IntPtr]::Zero)
if(!$result) {
Write-Host
"Error : cannot dump the process" -ForegroundColor Red
$fileStream.Close()
Stop-Script
}
}
catch{
$_.Exception.Message
Write-Host
"Error : cannot dump the process" -ForegroundColor Red
$fileStream.Close()
Stop-Script
}
$fileStream.Close()
}