拒绝从任何工作站和服务器向某些用户组打印文档?

拒绝从任何工作站和服务器向某些用户组打印文档?

Active Directory 域是否可以使用组策略或其他方式完全拒绝从任何工作站和服务器向某些用户组打印文档?

这是重要的那:

  • 禁止打印必须适用于该用户(同一台计算机上的另一个用户必须能够打印)。
  • 即使用户的电脑有本地连接的打印机,该禁止措施也必须有效。
  • 它必须能够通过更改域组中的成员身份来快速启用或禁用用户打印。
  • 一些打印机通过 USB 连接到用户的计算机

答案1

  • 为所有打印机添加安全组“DenyPrinting”,并将设置设为打印->拒绝。
  • 使用 GPO 为该组“禁用添加打印机”。
  • 将不应打印的用户添加到组中

答案2

我发现的最佳方法:

在使用 GPP 的域中的所有计算机上创建一个使用本地系统帐户定期运行 powershell 脚本的任务:

$Account = "DOMAIN\Group_deny_print"
Get-Printer -full | Where-Object Type -eq "Local" | foreach { 
    try  
    { 
        $acl = New-Object -TypeName Security.AccessControl.CommonSecurityDescriptor $false, $false, ($_ | Select-Object PermissionSDDL -ExpandProperty PermissionSDDL);
        Write-Host "Deny $Account print to printer ($_.Name)";
        $NTAccountSid = (New-Object Security.Principal.NTAccount $Account).Translate([Security.Principal.SecurityIdentifier]).Value;
        $acl.DiscretionaryAcl.AddAccess( 
                [System.Security.AccessControl.AccessControlType]::Deny, 
                $NTAccountSid, 
                131080, #Print = (ACCESS_MASK.PRINTER_ACCESS_USE | BASE_RIGHTS.READ_CONTROL),
                [System.Security.AccessControl.InheritanceFlags]::None, 
                [System.Security.AccessControl.PropagationFlags]::None);
        $newacl = $acl.GetSddlForm("All");
    }
    catch [Exception]  
    { 
        Write-Error -Message "Failed:`n $_.Message" -Exception $_.Exception 
    } 
    $_ | Set-Printer -PermissionSDDL $newacl -verbose;
}

但 int 仅在 Windows Server 2012 / Windows 8 或更高版本中起作用。

相关内容