Powershell Get-Acl所有者参考

时间:2017-10-27 18:35:48

标签: powershell acl

有没有办法使用PowerShell而不是已解析的字符串版本来获取目录所有者的实际IdentityReference?

问题是我想从域A运行脚本来检查/修复域B中文件服务器的所有权问题。我们正处于迁移过程中,因此来自B的sid已被添加到sidhistory中答:所以我的代码包括:

$acl = Get-Acl -Path $path
$owner = $acl.Owner

当我从域A运行时,$ owner = domain_a \ user。
但是当我从域B运行它时,$ owner = domain_b \ user。

似乎Get-Acl函数正在获取IdentityReference,将其转换为客户端上的字符串,然后丢弃原始数据,因此我无法知道实际所有者是谁。

可以在域B中的计算机上运行它并获得正确的结果,但这似乎不应该是必要的。我错过了什么吗?

由于

2 个答案:

答案 0 :(得分:1)

您可以从SDDL字符串中解析它:

$acl = Get-Acl -Path $path
$owner = $acl.sddl -replace 'o:(.+?):.+','$1'
$owner

答案 1 :(得分:1)

必须稍作修改,因为 sddl 字符串中所有者之后的主组中的“G”正被正则表达式组捕获

$owner = $acl.sddl -replace 'o:(.+?)G:.+','$1'