Powershell - 在 Active Directory 中查找文件所有者

Powershell - Looking Up File Owner in Active Directory

如何在 Active Directory 中查找有关文件所有者的信息?以下内容不起作用,因为它将 Domain\User 解析为 Get-ADUser 命令

$owner = Get-Acl file.txt | Select-Object Owner | Out-String
Get-ADUser -Identity $owner

我还希望能够查询来自其他域的用户,因为默认情况下,Get-ADUser 会查找您的本地域。

Get-ADUser 的问题是它正在找你

identify a user by its distinguished name (DN), GUID, security identifier (SID), Security Accounts Manager (SAM) account name or name.

字符串 "domain\username" 不符合预期。相反,这样的事情怎么样:

$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 找到匹配的域控制器来搜索用户。

您也可以使用 .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