batch-file - 导出打印机时的 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.
正确执行后,我应该能够导出所有打印机/队列/驱动程序/等,然后重新导入它们。
解决方案
编辑:进一步试验后,我发现当以本地管理员身份运行导出文件时,即使使用-noacl
标志,printerexport 仍然存在权限问题。作为一种解决方法,我以域用户身份运行导出 bat 文件(我可以查看/编辑打印机导出权限),并且以本地管理员身份运行导入(需要正确导入所有内容)。
经过实验,我发现使用标志导出和导入-noacl
给了我我需要的结果。
根据Micorsoft Printbrm details,使用 -noacl 标志时:
the restored print queues will inherit the permissions of the target print server
推荐阅读
- angular - 如何在点击时将 AutoFocus 指令添加到输入?
- javascript - 如何使用按钮禁用表格行的折叠?
- go - 限制 VS Code for Go 仅下载 v 1.11 的包
- django - 如何用创建后的天数注释查询集
- python - 使用 pip3 命令在 raspberrypi 上安装 pygame 时出错
- sql-server - 通过powershell成功执行SQL脚本后没有得到输出
- sql-server - 使用 443 端口连接到 Azure Sql 服务器
- mysql - MariaDB 转储仅创建数据库
- node.js - 如何在节点中使用axios发布表单数据
- curl - 如何在 Elixir Phoenix 中将 CURL 请求转换为 Httpoison 请求