我正在尝试创建一个 Windows 可靠性监视器的进程,并在截屏后将其终止。
我在获取该进程并在截屏之前自动关闭它时遇到了麻烦,因为没有可标识该窗口的进程 ID。
有没有办法通过 PowerShell 关闭可靠性监视器?
$psi = New-object System.Diagnostics.ProcessStartInfo
$psi.CreateNoWindow = $false
$psi.UseShellExecute = $true
$psi.RedirectStandardOutput = $false
$psi.RedirectStandardError = $false
$psi.FileName = "Perfmon"
$psi.Arguments ="/rel"
$process = New-Object System.Diagnostics.Process
$process.StartInfo = $psi
[void]$process.Start()
#$output = $process.StandardOutput.ReadToEnd()
$process.id
Start-Sleep 5
答案1
perfmon /rel
启动perfmon
,但最终在 Explorer 进程中打开了可靠性监视器,因此没有可以终止的进程。根据您自己的评论,可靠性监视器没有您可以使用的命令行报告,我能想到的就是
- 枚举 shell 的窗口
- 找到可靠性监视器
- 退出窗口
在代码中
$shell = New-Object -ComObject Shell.Application
$window = $shell.Windows() | Where-Object { $_.LocationName -eq "Reliability Monitor" }
$window | ForEach-Object { $_.Quit() }