试图从打印机获取权限,查看用户名而不是sid

时间:2017-12-08 19:34:34

标签: powershell printing username sid

我有一个脚本来从我的打印机服务器上的打印机获取权限,但是输出正在返回SID,是否可以输入用户名作为输出?我将一次为多台打印机执行此操作,因此通过脚本运行每个SID来转换它们非常耗时。下面是我的脚本。

(Get-Printer 'brem-pt-8106H' -Full).PermissionSDDL

1 个答案:

答案 0 :(得分:1)

假设:用户存在于域

#Requires -Version 5
$SID = [System.Security.Principal.SecurityIdentifier]::new(
    (Get-Printer 'brem-pt-8106H' -Full).PermissionSDDL
)
$User = ($SID.Translate([System.Security.Principal.NTAccount])).Value

清理为可以管道的功能:

Function Get-UsernameFromSddl
{
    [CmdletBinding()]
    [OutputType([String])]
    Param(
        [Parameter(Mandatory,ValueFromPipeline,Position=0)]
        [String]$Sddl
    )

    $Sid = New-Object -TypeName 'System.Security.Principal.SecurityIdentifier' -ArgumentList $Sddl
    $User = $Sid.Translate([System.Security.Principal.NTAccount])

    Return $User.Value
}