windows无原生命令批量清理“过期本地缓存凭据”,实际需分三类处理:一、用cmdkey管理windows凭据(如cmdkey /list与/cmdkey /delete);二、用klist purge清空kerberos票据;三、重置windows hello或执行certutil -urlcache * delete辅助清理。
windows 本身不提供直接批量清理“过期本地缓存凭据”的原生命令,因为系统中并没有统一叫作“缓存凭据”的标准存储类型。但结合常见场景,你实际想清理的很可能是以下两类内容:
一、清理 Windows 凭据管理器中的过期或无效凭据
这类凭据保存在控制面板 → 凭据管理器(Credential Manager)里,包括网站、Windows 凭据、通用凭据等。PowerShell 无法直接读取或删除凭据管理器中的条目(微软未开放对应 cmdlet),但可通过 cmdkey 命令行工具批量操作已保存的 Windows 凭据(如映射网络驱动器、远程桌面等使用的凭据)。
- 查看所有已保存的 Windows 凭据:
cmdkey /list - 删除指定目标的凭据(例如 server01):
cmdkey /delete:server01 - 批量删除所有显式保存的 Windows 凭据(不含系统自动管理的):
cmdkey /list | findstr "Target:" | ForEach-Object { $_.Split('"')[1] } | ForEach-Object { cmdkey /delete:"$_" 2>&1 }
⚠️ 注意:该方法仅对 cmdkey 可见的凭据有效(即通过 net use /user 或 RDP 手动保存的),不包含浏览器保存的密码、Edge/Chrome 同步凭据、或 Windows Hello 关联的生物识别数据。
二、清理 Kerberos 票据缓存(TGT 和服务票据)
Kerberos 凭据缓存是临时内存中的认证票据,会随时间自动过期(默认 TGT 有效期为 10 小时)。若需强制清空当前用户的全部票据(含已过期和未过期的),可用:
- 清除当前用户所有 Kerberos 票据:
klist purge - 以管理员身份运行可清空所有登录会话的票据(含其他用户会话,需谨慎):
klist -li 0x3e7 purge(0x3e7 是 SYSTEM 会话 ID)
执行后,下次访问域资源时将自动重新获取新票据——这相当于“刷新”而非“按过期时间筛选删除”,但能有效解决因票据损坏或过期导致的 401/Access Denied 问题。
三、清理 WebAuthn / Windows Hello 相关缓存(间接影响)
Windows Hello 密钥和 WebAuthn 凭据由系统密钥存储(CNG Key Store)和凭据守护进程管理,不对外暴露独立删除接口。若怀疑其异常,可:
- 重置 Windows Hello 设置:设置 → 账户 → 登录选项 → Windows Hello → 删除并重新设置
- 或通过 PowerShell 清除与之关联的凭据提供程序缓存(需重启生效):
certutil -urlcache * delete(清空证书 URL 缓存,辅助验证链)
真正意义上的“按过期时间自动筛选并删凭据”在 Windows 中并不存在——凭据管理器不记录创建/过期时间字段,Kerberos 票据虽有过期时间但 klist 不支持条件过滤删除。所以实际操作中,更推荐定期手动检查凭据管理器,或用 klist purge + cmdkey /delete 组合做主动清理。不复杂但容易忽略。











