我有一个脚本来从我的打印机服务器上的打印机获取权限,但是输出正在返回SID,是否可以输入用户名作为输出?我将一次为多台打印机执行此操作,因此通过脚本运行每个SID来转换它们非常耗时。下面是我的脚本。
(Get-Printer 'brem-pt-8106H' -Full).PermissionSDDL
答案 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
}