如何使用 PowerShell /其他脚本设置打印机权限?

Bor*_*ard 5 windows printer powershell wmi

我需要在脚本中更新打印机的权限,即执行与我手动执行的操作相同的操作:

  1. 打开设备和打印机小程序
  2. 双击默认打印机(打开其队列)
  3. 转到打印机 -> 属性
  4. 在属性对话框中,转到安全选项卡
  5. 更改每个人的权限(例如,检查管理文档权限)

怎么做?例如,在 PowerShell 中,我可以这样做

Get-WmiObject -class win32_printer -filter Default=True
Run Code Online (Sandbox Code Playgroud)

获取默认打印机,然后有方法getSecurityDescriptor()setSecurityDescriptor()但例如这个命令:

(Get-WmiObject -class win32_printer -filter Default=True).getsecuritydescriptor().Descriptor
Run Code Online (Sandbox Code Playgroud)

返回 null 所以我不确定我是否以正确的方式这样做。

有人有设置打印机权限的工作示例吗?我是否走在正确的道路上,或者我应该完全使用 WMI 以外的其他东西?谢谢。

小智 1

我不知道 PowerShell,我只直接使用 .NET 和 WMI 完成了打印机权限,并且它可能会变得混乱,因为权限由SecurityDescriptor组成,它有一个Descriptor属性,它有一个DACL属性,其中包含一个或多个Win32_ACE对象,每个对象包含AccessMask、AceFlags 和 Trusttree,后者是一个Win32_Trustee对象,其中包含权限适用的对象。

也许有一个 PowerShell 插件可以简化上述设置,或者查看可以从 PowerShell 调用的SetACL 命令行工具。