如何在Active Directory中查找有关文件所有者的信息?以下操作无效,因为它将Domain \ User解析为Get-ADUser命令
$owner = Get-Acl file.txt | Select-Object Owner | Out-String
Get-ADUser -Identity $owner
我还希望能够查询其他域中的用户,因为默认情况下,Get-ADUser会在您的本地域中查找。
答案 0 :(得分:1)
Get-ADUser
的问题在于它正在寻找你
通过其可分辨名称(DN),GUID,安全标识符(SID),安全帐户管理器(SAM)帐户名称或名称来标识用户。
字符串"域\用户名"不适合其中一个预期的。相反,如何做这样的事情:
$domains = @{
DOMAIN = "dc.domain.local"
}
$file = "F:\temp\Re__.msg"
$fileOwner = Get-Acl $file | Select-Object -ExpandProperty Owner
$account = New-Object -TypeName PSObject -Property @{
domain = $fileOwner.Split("\")[0]
username = $fileOwner.Split("\")[1]
}
If($domains.ContainsKey($user.domain)){
$server = $domains[$user.domain]
Get-ADUser -Server $server -Identity $user.username
} Else {
Write-Warning "No matching server for the domain: $($user.domain)"
}
从这些域创建域和dc的哈希表。然后从$file
查询所有者。将该所有者拆分为其域和用户名。然后使用$user.domain
找到匹配的域控制器来搜索用户。
答案 1 :(得分:1)
您还可以使用.Net Framework获取SID并将其传递给Get-ADUser:
$user = New-Object System.Security.Principal.NTAccount (get-acl 'file.txt').owner
$sid = $user.Translate([System.Security.Principal.SecurityIdentifier]).Value
Get-ADUser $sid