Как установить разрешения для принтера с помощью PowerShell или другого скрипта?

Как установить разрешения для принтера с помощью PowerShell или другого скрипта?

Мне нужно обновить разрешения принтера в скрипте, т.е. сделать то же самое, что я бы сделал вручную следующим образом:

  1. ОткрытьУстройства и принтерыапплет
  2. Дважды щелкните принтер по умолчанию (откройте его очередь)
  3. Идти кПринтер -> Свойства
  4. В диалоговом окне свойств перейдите кБезопасностьвкладка
  5. Изменить разрешения дляКаждый(например, проверитьУправление документамиразрешения)

Как это сделать? Например, в PowerShell я могу сделать

Get-WmiObject -class win32_printer -filter Default=True

чтобы получить принтер по умолчанию, есть getSecurityDescriptor()и такие методы, setSecurityDescriptor()но например эта команда:

(Get-WmiObject -class win32_printer -filter Default=True).getsecuritydescriptor().Descriptor

возвращает null, поэтому я не уверен, что делаю это правильно.

Есть ли у кого-нибудь рабочий пример настройки разрешений принтера? Я на правильном пути или мне следует использовать что-то другое, а не WMI? Спасибо.

решение1

Я не знаю PowerShell, я только делал разрешения для принтеров напрямую с помощью .NET и WMI, и это может быть запутанно, поскольку разрешения состоят изSecurityDescriptor, который имеетДескрипторимущество, которое имеетДАКЛсвойство, которое содержит один или несколькоWin32_ACEобъекты, каждый из которых содержитAccessMask, AceFlags и Trusttreeкоторый являетсяWin32_Trusteeобъект, содержащий информацию о том, к кому применяется разрешение.

Возможно, есть дополнение PowerShell, которое упрощает настройку вышеперечисленного, в качестве альтернативы взгляните наИнструмент командной строки SetACLкоторый вы можете вызвать из PowerShell.

Связанный контент