首页 > 解决方案 > 导出打印机时的 PrintBRM 权限问题

问题描述

使用 Window 的 Printbrm 工具将打印机导出到服务器上的目录时,我得到了导出,但不再具有 .printerexport 的读取权限。

我正在使用的代码在将存储打印机导出的服务器(在批处理文件中)上运行。从服务器正确运行 bat 文件会在本地导出时为我提供读取权限。运行从服务器导出到同一服务器的 bat 文件时会出现此问题。bat 文件在本地管理员帐户上运行,服务器通过域用户连接。

要导出的批处理文件:

rem Connect to server
set /p u=Username:
net use \\servername\dir /user:domain\%u% * /persistent:no

rem Use pushd because printbrm does not support spaces in path name
pushd \\servername\dir

C:\Windows\System32\spool\tools\PrintBrm.exe -b -f %computername%.printerexport -o force

popd

要重新导入的批处理文件:

rem Connect to server
set /p u=Username:
net use \\servername\dir /user:domain\%u% * /persistent:no

rem Use pushd because printbrm does not support spaces in path name
pushd \\servername\dir

C:\Windows\System32\spool\tools\PrintBrm.exe -r -f %computername%.printerexport -o force

popd

打印机导出文件创建成功。运行批处理文件以重新导入时,我得到:

Operation mode: restore
Target server: local machine
Target file path: \\servername\dir\%computername%.printerexport.
Queue publish mode: none
Overwrite mode: keep existing settings
Queue ACL mode: restore ACLs from backup
The following error occurred: 0x80070002.
The system cannot find the file specified.

检查 %computername%.printerexport 属性>安全,我收到一条消息:

You must have Read permissions to view the properties of this object.

正确执行后,我应该能够导出所有打印机/队列/驱动程序/等,然后重新导入它们。

标签: batch-filecmdpermissions

解决方案


编辑:进一步试验后,我发现当以本地管理员身份运行导出文件时,即使使用-noacl标志,printerexport 仍然存在权限问题。作为一种解决方法,我以域用户身份运行导出 bat 文件(我可以查看/编辑打印机导出权限),并且以本地管理员身份运行导入(需要正确导入所有内容)。


经过实验,我发现使用标志导出和导入-noacl给了我我需要的结果。

根据Micorsoft Printbrm details,使用 -noacl 标志时:

the restored print queues will inherit the permissions of the target print server

推荐阅读