Win10怎么批量检查文件是否损坏_Win10PowerShell Get-ItemProperty验证文件完整性【排查】

发布时间 - 2025-12-25 00:00:00    点击率:
Win10中可用PowerShell批量排查文件损坏:一、查零长或时间戳异常文件;二、用Get-ItemProperty检NTFS属性冲突(如加密+压缩);三、用Get-FileHash比对已知哈希;四、用chkdsk扫描底层文件系统错误。

如果您在Win10系统中怀疑多个文件可能已损坏,但无法逐一手动校验,可通过PowerShell调用文件属性与元数据信息进行初步完整性排查。Get-ItemProperty本身不直接计算哈希值,但可配合其他cmdlet获取关键属性(如LastWriteTime、Length、Attributes)辅助识别异常文件。以下是多种基于PowerShell的批量检查方法:

一、通过文件长度与最后修改时间筛查异常文件

文件长度为0或最后写入时间早于创建时间,常是损坏或截断的典型迹象。此方法无需额外工具,适用于快速初筛。

1、以管理员身份打开Windows PowerShell。

2、执行以下命令,列出指定路径下所有长度为0的文件:

Get-ChildItem -Path "C:\Your\Target\Folder" -Recurse -File | Where-Object {$_.Length -eq 0} | Select-Object FullName, Length, LastWriteTime

3、执行以下命令,查找LastWriteTime早于CreationTime的文件(极罕见,多见于时间戳被篡改或文件系统异常):

Get-ChildItem -Path "C:\Your\Target\Folder" -Recurse -File | Where-Object {$_.LastWriteTime -lt $_.CreationTime} | Select-Object FullName, CreationTime, LastWriteTime

二、利用Get-ItemProperty读取NTFS文件属性标志

NTFS文件系统为每个文件存储扩展属性(如“已压缩”“加密”“只读”),若关键属性意外丢失或冲突(例如同时标记为“加密”与“已压缩”),可能预示元数据损坏。Get-ItemProperty可提取这些标志用于批量比对。

1、运行命令获取目标目录中所有文件的Attributes属性:

Get-ChildItem -Path "C:\Your\Target\Folder" -Recurse -File | ForEach-Object { $attrs = $_.Attributes; [PSCustomObject]@{ FullName = $_.FullName; Attributes = $attrs; IsReadOnly = $attrs.HasFlag([System.IO.FileAttributes]::ReadOnly); IsEncrypted = $attrs.HasFlag([System.IO.FileAttributes]::Encrypted); IsCompressed = $attrs.HasFlag([System.IO.FileAttributes]::Compressed) } } | Where-Object { $_.IsEncrypted -and $_.IsCompressed } | Select-Object FullName, Attributes

2、重点检查输出中同时显示 IsEncrypted 和 IsCompressed 为 True 的文件,此类组合在标准NTFS中不被支持,属元数据异常。

三、结合Get-FileHash进行真实哈希校验(需已知基准值)

当存在原始文件的可信哈希值(如SHA256列表),可使用Get-FileHash批量比对。此法为最可靠的完整性验证手段,但依赖预先保存的哈希清单。

1、将已知正确哈希值存为CSV文件(格式:FilePath,ExpectedHash),例如hashlist.csv内容如下:

"C:\Data\report.pdf","A1B2C3D4E5F6..."

2、在PowerShell中导入并逐行校验:

$hashList = Import-Csv "C:\hashlist.csv"; foreach ($item in $hashList) { if (Test-Path $item.FilePath) { $actual = Get-FileHash -Path $item.FilePath -Algorithm SHA256; if ($actual.Hash -ne $item.ExpectedHash) { Write-Output "哈希不匹配:$($item.FilePath)" } } else { Write-Output "文件不存在:$($item.FilePath)" } }

3、校验结果中任何未输出即表示对应文件哈希一致;出现“哈希不匹配”提示则确认该文件内容已变更或损坏。

四、扫描文件系统结构错误(底层扇区级损坏)

若怀疑硬盘物理层或文件系统结构异常(如簇链断裂、MFT损坏),需绕过文件层,直接调用chkdsk扫描。此操作影响系统运行,必须在非系统盘或重启后执行。

1、检查非系统盘(如D:)是否含错误:

chkdsk D: /f /r /x

2、对系统盘C:,需计划下次启动时扫描:

chkdsk C: /f /r /x

3、系统将提示“Chkdsk cannot run because the volume is in use by another process. Would you like to schedule this volume to be checked the next time the system restarts? (Y/N)” —— 输入Y 并回车,重启后自动执行。


# go  # windows  # 硬盘  # 工具  # win10  # csv  # pdf  # win  # csv文件  # win10系统  # Object  # if  # foreach  # select  # Length  # this  # 文件系统  # 比对  # 系统盘  # 重启  # 长度为  # 不匹配  # 早于  # 多个  # 适用于  # 不存在 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: JavaScript模板引擎Template.js使用详解  高端网站建设与定制开发一站式解决方案 中企动力  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  油猴 教程,油猴搜脚本为什么会网页无法显示?  android nfc常用标签读取总结  如何获取免费开源的自助建站系统源码?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  Laravel storage目录权限问题_Laravel文件写入权限设置  Laravel中的withCount方法怎么高效统计关联模型数量  Laravel如何使用Collections进行数据处理?(实用方法示例)  如何用搬瓦工VPS快速搭建个人网站?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  如何有效防御Web建站篡改攻击?  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  如何在阿里云域名上完成建站全流程?  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  如何用5美元大硬盘VPS安全高效搭建个人网站?  如何为不同团队 ID 动态生成多个独立按钮  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  Java遍历集合的三种方式  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  百度浏览器如何管理插件 百度浏览器插件管理方法  如何挑选最适合建站的高性能VPS主机?  西安专业网站制作公司有哪些,陕西省建行官方网站?  如何快速建站并高效导出源代码?  如何在香港服务器上快速搭建免备案网站?  长沙做网站要多少钱,长沙国安网络怎么样?  Laravel如何使用Eloquent进行子查询  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  如何挑选优质建站一级代理提升网站排名?  如何快速生成橙子建站落地页链接?  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  如何用IIS7快速搭建并优化网站站点?  Laravel如何使用withoutEvents方法临时禁用模型事件  详解MySQL数据库的安装与密码配置  Laravel如何记录自定义日志?(Log频道配置)  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  php结合redis实现高并发下的抢购、秒杀功能的实例  简单实现Android文件上传