如何获取启动时运行的 CHKDSK 结果?

Hac*_*koo 2 powershell batch-file

有问题的

\n\n
\n

CHKDSK当我的机器重新启动时运行,并显示一些内容。\n 问题是我不知道它显示什么,因为它在完成后继续\n 重新启动机器。如何让它停止、暂停或以其他方式让我看看它做了什么?

\n\n

chkdsk 无法运行,因为该卷正被另一个进程使用意味着\n ?,CHKDSK 需要对磁盘\xe2\x80\x99s 进行独占访问,检查\xe2\x80\x99s\n 是否已被指示尝试修复或修复。如果该磁盘是您的 Windows 驱动器 (C:),则 CHKDSK 可以具有独占访问权限,因为 Windows 仅使用该驱动器来运行您的系统。

\n
\n\n

在此输入图像描述

\n\n

当我们重新启动时,CHKDSK 在 Windows 加载之前执行。

\n\n

在此输入图像描述

\n\n

CHKDSK像平常一样运行,完成后,它会重新启动系统 \xe2\x80\x93,这当然会导致屏幕上可能显示的任何进度或结果消失。

\n\n

为了创建一个有用的工具来维护我的硬盘,以检查、修复和修复它们的错误。

\n\n

我做了这批

\n\n
@echo off\nTitle Check Disk drives for errors and fix them by Hackoo 2016\nmode con cols=67 lines=5 & Color 0A\n:::::::::::::::::::::::::::::::::::::::::\n:: Automatically check & get admin rights\n:::::::::::::::::::::::::::::::::::::::::\nset "TmpLog=%Tmp%\\TmpLog.txt"\nset "Log=%~dp0%computername%_%~n0.txt"\nIf Exist "%TmpLog%" Del "%TmpLog%"\nIf exist "%Log%" Del "%Log%"\nREM  --> Check for permissions\nReg query "HKU\\S-1-5-19\\Environment" >nul 2>&1\nREM --> If error flag set, we do not have admin.\nif \'%errorlevel%\' NEQ \'0\' (\nEcho.\nECHO                        **************************************\nECHO                         Running Admin shell... Please wait...\nECHO                        **************************************\n\n    goto UACPrompt\n) else ( goto gotAdmin )\n\n:UACPrompt\n    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\\getadmin.vbs"\n    set params = %*:"=""\n    echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%\\getadmin.vbs"\n\n    "%temp%\\getadmin.vbs"\n    del "%temp%\\getadmin.vbs"\n    exit /B\n\n:gotAdmin\n::::::::::::::::::::::::::::\n::          START         ::\n::::::::::::::::::::::::::::\n( Echo Scan started @ & Date /T & Time /T & echo ************************ ) > "%TmpLog%"\nsetlocal ENABLEDELAYEDEXPANSION\nfor /f "tokens=2" %%i in (\'wmic logicaldisk where "drivetype=3" ^|find /i ":"\') do (\n    set "fix=%%i"\n        Call :Affich !fix!\n    (\n        echo !fix! Drive \n        echo ************************\n        echo(\n        (echo O\n        echo Y) | CHKDSK !fix! /f \n        echo(\n        echo ************************\n    )>> "%TmpLog%"\n)\nEndLocal\nGoto Question\nExit /b\n\n:Question\n( echo Scan finished @ & Date /T & Time /T & echo ************************ )>> "%TmpLog%"\nCMD /U /C Type "%TmpLog%" > "%Log%"\nIf Exist "%TmpLog%" Del "%TmpLog%"\n(\n    echo    Answ = MsgBox("Did you want to reboot the computer to complete the scanning ?",VbYesNo+VbQuestion,"Reboot the computer to check hard disk drives for errors by Hackoo"^)\n    echo    If Answ = VbYes then \n    echo        wscript.Quit(0^)\n    echo    Else\n    echo        wscript.Quit(1^)\n    echo    End If\n)>"%tmp%\\%~n0.vbs"\n\nCscript /nologo "%tmp%\\%~n0.vbs"\nIF "%errorlevel%" EQU "1" (start "" "%Log%" & Exit ) else (goto Shutdown)\n\n:Shutdown \necho(\ncls\necho(\necho     Save your work - Reboot of your computer in 20 seconds\necho(\necho   Enregistrer vos documents - Redemarrage du PC dans 20 seconds \nShutdown.exe /r /t 20 /c "Enregistrer vos documents - Redemarrage du PC dans 20 secondes"\nstart "" %Log%\npause>nul\nexit /b\n\n:Affich\nCls\necho(\necho                ***********************************\nEcho                 Please wait a while Scanning "%~1"\necho                ***********************************\nTimeout /T 2 /nobreak>nul\nexit /b\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以,我的问题是:我如何获得通过批处理或 powershell 启动时运行的结果?CHKDSK

\n

Ans*_*ers 5

该信息记录在事件日志中。您应该能够像这样获取它(使用 PowerShell):

Get-EventLog -LogName Application -Source Wininit |
    Where-Object { $_.Message -like '*checking file system*' } |
    Sort-Object TimeGenerated -Descending |
    Select-Object -First 1 -Expand Message
Run Code Online (Sandbox Code Playgroud)