You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PowerShell脚本读取所有NTFS文件?附C#实现示例

使用PowerShell实现NTFSDirect的MFT文件枚举功能

据我所知,NTFSDirect允许我们直接访问MFT(主文件表)来获取NTFS卷上的文件和目录信息。以下是实现该功能的C#示例代码:

string vol = "c:";

var fileList = new NTFSDirect.Enumerator(vol, new [] {".txt", ".md"});

foreach(string file in fileList) 
{
    FileInfo f = new FileInfo(file);
    if (!f.Exists) { continue; } // 即使是无访问权限的文件也会被枚举,此处跳过不存在的文件
}

目前尚未见到基于该方式封装的PowerShell实现,请问如何通过PowerShell脚本实现这一功能?


解决方案

要在PowerShell中实现该功能,你可以通过两种方式实现:引用NTFSDirect类库,或者嵌入C#代码调用类库功能:

方式1:引用预编译的NTFSDirect DLL

  1. 先获取NTFSDirect的编译DLL文件
  2. 在PowerShell中加载该DLL并调用类方法:
# 加载NTFSDirect DLL
Add-Type -Path "NTFSDirect.dll"

# 指定目标卷和要过滤的文件扩展名
$volume = "c:"
$extensions = @(".txt", ".md")

# 创建枚举器并遍历文件
$fileEnumerator = New-Object NTFSDirect.Enumerator($volume, $extensions)
foreach ($filePath in $fileEnumerator) {
    $fileInfo = Get-Item -Path $filePath -ErrorAction SilentlyContinue
    if (-not $fileInfo) { continue } # 跳过无访问权限或不存在的文件
    # 此处添加自定义处理逻辑,比如输出文件路径
    Write-Output $fileInfo.FullName
}

方式2:在PowerShell中嵌入C#代码调用NTFSDirect

如果不想单独依赖外部DLL,可以直接在PowerShell中嵌入C#代码并编译执行:

# 定义包含NTFSDirect调用逻辑的C#代码
$csharpCode = @"
using System;
using System.IO;
using NTFSDirect;

public class MftEnumerator
{
    public static void EnumerateFiles(string volume, string[] extensions)
    {
        var fileList = new Enumerator(volume, extensions);
        foreach (string file in fileList)
        {
            FileInfo f = new FileInfo(file);
            if (f.Exists)
            {
                Console.WriteLine(f.FullName);
            }
        }
    }
}
"@

# 加载NTFSDirect DLL并编译C#代码
Add-Type -Path "NTFSDirect.dll" -TypeDefinition $csharpCode

# 调用枚举方法
[MftEnumerator]::EnumerateFiles("c:", @(".txt", ".md"))

注意事项

  • 运行脚本需要管理员权限,直接访问MFT需要系统级权限支持
  • 确保NTFSDirect DLL与PowerShell的位数匹配(32位/64位)
  • 枚举结果中可能包含无访问权限的文件,需通过错误处理或条件判断跳过

内容的提问来源于stack exchange,提问作者Arbelac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 19:18:35