1

Как изменить права доступа группы "все" на локальном принтере с помощью сценария? Я копался и что-то подсказывало мне использовать ACL с помощью powershell?

1 ответ1

1

Пожалуйста, ознакомьтесь с приведенными ниже ресурсами и указанными шагами для получения подробных сведений о настройке разрешений принтера через командную строку в Windows (как PowerShell, так и Batch).

Пакетное изменение разрешений принтера

Если вы хотите сделать это с помощью инструмента командной строки, получите subinacl из Resource Kit:

http://www.microsoft.com/downloads/details.aspx?FamilyID=e8ba3e56-d8fe-4a91-93cf-ed6985e3927b&displaylang=en

subinacl /printer <\printer name> /grant=Everyone=F

или изменив сценарий Стива:

for /f %a in ('net share ^| find "Spooled"') do subinacl /printer %a /grant=Everyone=F

источник


PowerShell - Добавить разрешение на принтер

Windows Server 2012 поставляется с модулем PrintManagement, который упрощает автоматизацию управления принтерами. Но, тестируя командлеты, такие как Add-Printer и Set-Printer, я заметил, что вы можете установить разрешение на принтер только с помощью параметра -PermissionSDDL. Эти параметры в обоих командлетах ожидают разрешения принтера с использованием языка описания определения безопасности (SDDL), который не так просто вводить в командной строке.

Function Add-LHSPrinterPermissionSDDL 
{ 

[cmdletbinding(   
    ConfirmImpact = 'Low', 
    SupportsShouldProcess = $false 
)]   

[OutputType('System.String')] 

param( 
    [Parameter(Position=0,Mandatory=$True,ValueFromPipeline=$False, 
        HelpMessage='A Security Group or User like "Domain\GroupName" or "Domain\UserName"')] 
    [String]$Account, 

    [Parameter(Position=1,Mandatory=$True,ValueFromPipeline=$False)] 
    [String]$existingSDDL 
) 

BEGIN { 

    Set-StrictMode -Version Latest 

    ${CmdletName} = $Pscmdlet.MyInvocation.MyCommand.Name 


} # end BEGIN 

PROCESS { 

    try  
    { 
        $isContainer = $false 
        $isDS = $false 
        $SecurityDescriptor = New-Object -TypeName ` 
            Security.AccessControl.CommonSecurityDescriptor ` 
            $isContainer, $isDS, $existingSDDL 

        Write-Verbose "Adding Permission for Group $Account" 
        #get the SID for the specified Group and add it to the SDDL 
        $NTAccount = New-Object Security.Principal.NTAccount $Account 
        $NTAccountSid = $NTAccount.Translate([Security.Principal.SecurityIdentifier]).Value 

        $SecurityDescriptor.DiscretionaryAcl.AddAccess( 
            [System.Security.AccessControl.AccessControlType]::Allow, 
            $NTAccountSid, 
            268435456, #full control all operations 
            [System.Security.AccessControl.InheritanceFlags]::None, 
            [System.Security.AccessControl.PropagationFlags]::None) | Out-Null 


        return $SecurityDescriptor.GetSddlForm("All") 
    } 
    catch [Exception]  
    { 
        Write-Error -Message "Failed To Generate SDDL (review inner exception):`n $_.Message" ` 
            -Exception $_.Exception 
    } 
} # end PROCESS 

END { Write-Verbose "Function ${CmdletName} finished." } 
} #end Function Add-LHSPrinterPermissionSDDL

источник


Дополнительные ресурсы

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .