Active-Directory

拒絕從任何工作站和伺服器向某個使用者組列印文件?

  • November 30, 2016

Active Directory 域是否可以使用組策略或其他方式完全拒絕從任何工作站和伺服器向某個使用者組列印文件?

重要是:

  • 該禁令必須適用於使用者(同一台電腦上的其他使用者必須能夠列印)。
  • 即使使用者的 PC 具有本地連接的列印機,該禁令也必須有效。
  • 它必須能夠通過更改其在域組中的成員身份來快速啟用或禁用使用者進行列印。
  • 一些列印機通過 USB 連接到使用者的電腦

我發現的最好方法:

在使用 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 或更高版本。

  • 使用設置 Print -> Deny 將安全組“DenyPrinting”添加到所有列印機。
  • 使用 GPO 為該組“禁用添加列印機”。
  • 將使用者添加到不應列印的組中

引用自:https://serverfault.com/questions/816040