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

如何从Export-Clixml导出的NTFS权限XML文件中提取未转换的原始账户名

解决方案

你遇到的查询失败主要有两个原因:

  • 导出的XML带有PowerShell专属默认命名空间,未声明命名空间的XPath无法匹配到节点
  • 你编写的XPath路径语法不符合规范,属性查询需要使用@前缀

最简方案(直接读取预存的权限字符串)

你需要的账户主体名、权限类型等信息已经在导出时被序列化为AccessToString节点值,无需解析复杂的ACL结构,直接读取该节点即可:

# 加载XML文件
$ntfsFile = "你的NTFS权限XML文件路径"
$rawXml = [Xml](Get-Content -LiteralPath $ntfsFile -Encoding UTF8)

# 注册PowerShell序列化命名空间
$nsManager = [System.Xml.XmlNamespaceManager]::new($rawXml.NameTable)
$nsManager.AddNamespace("ps", "http://schemas.microsoft.com/powershell/2004/04")

# 读取权限字符串并拆分输出
$accessContent = $rawXml.SelectSingleNode("//ps:S[@N='AccessToString']", $nsManager).InnerText
$accessContent -split "_x000A_" | Where-Object { -not [string]::IsNullOrWhiteSpace($_) }

执行后将直接输出你预期的权限列表,且所有账户名均为导出时的原始主体名,不会受当前机器账户存在性影响转换为SID。

原XPath查询修正方案

如果你需要直接读取Access节点做后续处理,可使用修正后的查询语句:

$accessNode = $rawXml.SelectSingleNode("//ps:Obj[@N='Access']", $nsManager)
# 后续可自行处理该节点下的ACE条目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:21:01