PowerShell 技能连载 - 使用目录文件

目录文件支持 (.cat) 是 PowerShell 5.1 新引入的特性。目录文件基本上是包含哈希值的文件列表。您可以用它们来确保一个指定的文件结构没有改变。

以下是一个简单的示例。它输入一个文件夹(请确保文件夹存在,否则将它重命名)并对整个文件夹的内容创建一个目录文件。请注意这将对文件夹中的每个文件创建一个哈希值,所以请留意文件夹的体积不要太大:

1
2
3
$path = c:\folderToCheck"
$catPath = "$home\Desktop\summary.cat"
New-FileCatalog -Path $path -CatalogVersion 2.0 -CatalogFilePath $catPath

New-FileCatalog 将在桌面上创建一个 summary.cat 文件。这个文件可以用于测试文件夹结构并确保文件没有改变过:

1
Test-FileCatalog -Detailed -Path $path -CatalogFilePath $catPath

结果看起来类似这样:

Status        : Valid
HashAlgorithm : SHA1
CatalogItems  : {[remoting systeminventar.ps1,
                F43C8D6F9CB93FB9AA5DBA6733D9996645832256], [klonen und
                prozessprio.ps1, F3DE20424CD90CDB5B85933B777A2F9A3F3D3187],
                [scriptblock rueckgabewerte.ps1,
                EB239D7906EF42E2639CACBE68C6FDD8F4AD899F], [Untitled4.ps1,
                E5E4DC20934287ED869230706A1DEEDEB550B8DE]...}
PathItems     : {[beispielsyntax.ps1,
                5183C82B7F0F3D0623242DD5F97A658724BE3B81], [closure.ps1,
                D2A036B068548B3E773E3BEBCF40997231576ED1], [debug1.ps1,
                3547D2659792A9ABA9E6E12F287D7A8116540FCF], [debug2.ps1,
                76C63FA578C09F30DF2BE055C37C039AFB1EFEDE]...}
Signature     : System.Management.Automation.Signature

请注意 New-FileCatalog 当前并不支持路径中的特殊字符,例如德语的 “Umlaute”。

PowerShell 技能连载 - 使用目录文件

http://blog.vichamp.com/2018/11/26/using-catalog-files/

作者

吴波

发布于

2018-11-26

更新于

2022-07-06

许可协议

评论