2017-12-08 19 views
0

프린터 서버의 프린터에서 사용 권한을 얻으려는 스크립트가 있는데 출력이 SID를 반환하지만 사용자 이름을 얻기 위해 파이프를 연결할 수 있습니까? 출력? 한 번에 여러 프린터에서이 작업을 수행하므로 각 SID를 스크립트를 통해 변환하여 실행하면 너무 많은 시간이 소요됩니다. 아래는 내 대본이다.프린터에서 사용 권한을 얻으려는 중 sid가 아닌 사용자 이름으로보기

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

답변

1

가정 :

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 
} 
: 사용자가

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

은 당신이 할 수있는 기능 파이프로 정리 도메인에 존재