2017-12-08 10 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 

が存在します

関連する問題