Server 2008 R2 - 将新权限应用于服务器上的所有打印机

Server 2008 R2 - 将新权限应用于服务器上的所有打印机

我们设置了一个新的 64 位打印服务器(Server 2008 R2),在我们之前的打印服务器上,我们将帮助台作为高级用户组的成员,并为他们提供“管理员打印机”,以便他们可以在打印机出现故障时更改打印机端口。

看起来好像有一个疏忽,我们在设置新服务器时没有添加它。

我已将它们添加到高级用户,并进入“PRINTMANAGEMENT.MSC”中的打印服务器属性并授予权限,但这似乎仅适用于新打印机,因为它似乎不会继承到任何现有打印机。

有没有办法获得这些权限以传播到现有的打印机?

这些被设置为本地打印机,绑定到标准 TCP / IP 端口。

答案1

我偶然发现了这个问题,意识到我从来没有发布过我所做的事情,最终我找到了一种使用 SUBINACL.exe 的方法(需要位于 System32 之类的路径目录中)

并将其通过 powershell 循环传递到所有打印机

这是代码,以管理员身份从打印服务器上的 PS 控制台运行它

$Logpath = "c:\temp\logs"


Stop-Transcript -ErrorAction "SilentlyContinue"
Start-Transcript $Logpath -Append

$PRINTERS = (Get-WmiObject Win32_Printer)

foreach($PRINTER in $PRINTERS)
{$Server = $PRINTER.SystemName
 $PrinterName = $PRINTER.name
Write-Host \\$Server\$PrinterName 
Invoke-Command -AllowRedirection {subinacl.exe /printer \\$Server\$PrinterName /Grant=domain\username=F}
}
Stop-Transcript

我不再在那里工作了,但我希望有人能从中受益。

答案2

我知道这不是将安全权限应用于所有打印机的方法,但它可能会解决您的问题。

打印机的默认权限通常似乎包括分配给域组“打印操作员”的管理权限。考虑将您的帮助台组添加到“打印操作员”。

此外,似乎有一组全局权限,可以允许将设置应用于“打印服务器属性”下的所有打印机,可以通过右键单击“打印服务器”的名称来访问printmanagement.msc

注意:我之前没有使用过打印服务器属性 acl,所以我无法说它是否按照您想要的方式工作。

答案3

当我运行这个程序时,它似乎正在提取服务器名称和打印机名称,但在运行命令时出错--

\[打印服务器名称][打印机名称] Invoke-Command:无法评估参数“ConnectionUri”,因为其参数被指定为脚本块,并且没有输入。没有输入,就无法评估脚本块。在 C:\ntutils\utils\Subinacl7.ps1:13 char:15 + Invoke-Command <<<< -AllowRedirection {c:\ntutils\utils\subinacl.exe /printer http://$Server/$PrinterName /Grant=ter minalserver\ManagePrintQueues=M} + CategoryInfo:MetadataError: (:) [Invoke-Command],ParameterBindingException + FullyQualifiedErrorId:ScriptBlockArgumentNoInput,Microsoft.PowerShell.Commands.InvokeCommandCommand

答案4

这个问题困扰了我一段时间,在这篇帖子的帮助下,我找到了我需要的答案。正如 Mike 指出的那样,脚本给了我错误,我尝试修改它,但没有成功。最后我直接使用了老好的 CMD。

首先,我得到了打印机列表。

Get-WmiObject Win32_Printer | Select-Object -Property Name

其次,我将结果与命令一起粘贴到 Excel 中。

查看 Excel 布局图像

第三,我将其复制到 Notepad++ 中并清理空格。

最后粘贴到CMD并运行。

看起来很多,但我只花了 10 分钟。抱歉,没有清理干净!希望有帮助!

相关内容