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()
}
 
Aucun commentaire:
Enregistrer un commentaire