Проблемы с автоматическим обновлением драйвера принтера (настроек принтера) и настроек принтера в Win7 с использованием скриптов PS, cmd, vbs и т. д.?

Проблемы с автоматическим обновлением драйвера принтера (настроек принтера) и настроек принтера в Win7 с использованием скриптов PS, cmd, vbs и т. д.?

WMI может это сделать, но у меня проблема, ПК включены, но не вошли в систему. Если я попытаюсь запустить:

wmic /node:%strIP% printer where DeviceID="lp1" set DriverName="Lexmark Universal v2"

Он выдает сообщение об «общем сбое». Я подключаюсь по RDP и запускаю ту же команду со своей стороны, и она работает. Версия PowerShell, которую я использую, устарела, поэтому в ней нет некоторых командлетов принтера, а обновление PS в настоящее время не рассматривается. Есть ли способ удаленно войти в систему, не подключаясь по RDP? Через PS, cmd, PSEXEC и т. д.?

Другой путь, который я выбрал, это использование regedit, но я сталкиваюсь с некоторыми загвоздками с этим, а именно, я не могу понять, что копировать. В regedit я могу изменить имя драйвера и настройки, которые включают дуплекс и лоток 2 (в настройках принтера), но я не могу понять, как изменить настройки в настройках принтера для двусторонней печати и печати вдоль длинного края.

Что я сделал, чтобы выяснить, что нужно изменить, я нашел имя принтера в regedit как значение данных и экспортировал ключи перед изменением настроек. Затем я снова экспортировал его ПОСЛЕ изменения настроек. Затем я использовал, fc /c /a /u before.reg after.regчтобы получить изменения. Я разрезал .reg, чтобы включить только измененные значения. Запуск .reg, похоже, меняет все, кроме печати с обеих сторон, вдоль настроек длинного края. Это принтер Lexmark, поэтому мне интересно, могут ли настройки для него храниться где-то еще.

Недавно моя компания изменила политику безопасности, и теперь после 30 минут бездействия компьютер выводится из системы. Невозможно выполнить эти изменения драйверов в обычные часы, когда компьютеры НЕ выведены из системы, поэтому на данный момент они выполняются ночью с помощью RDP-входа и вручную для каждого компьютера. Я бы даже не отказался разобраться, как удаленно входить в систему, не входя в систему RDP, чтобы WMI мог творить чудеса.

Я попробовал, используя только Powershell:

$Str = Read-Host "Please select a store number [###] "
$PC = Read-Host "Please select a PC number [##] "

$PCNm = "0$Str-CCPC-$PC"

$lp1 = Get-WMIObject -ComputerName $PCNm -Query "SELECT * from Win32_Printer Where DeviceID='lp1'"
$lp1.DriverName = "Lexmark Universal v2"
$lp1.Put()

Там тоже происходит сбой с общей ошибкой, когда никто не вошел на ПК. Я могу запросить WMI для свойств, так что WMI работает, но когда я пытаюсь задать значения, он терпит неудачу. Я проверил с помощью format-list -property drivernameон обновился нормально, как только я вошел через RDP и ПОТОМ запустил скрипт. Очевидно, я вообще не хочу входить по RDP. Я включил PSRemoting на ПК, просто на всякий случай, так что я попробую invoke-commandдальше.

решение1

Есть ли способ удаленно авторизовать кого-либо?

Вы можете использовать psexecдля запуска удаленной команды от имени определенного пользователя.

psexec \\computer -u user -p psswd [options] command [arguments]

Попробуйте следующую команду:

psexec \\computer -u user -p psswd wmic /node:%strIP% printer where DeviceID="lp1" set DriverName="Lexmark Universal v2"

Примечания:

  • Вы также можете рассмотреть @run_fileопцию (Выполнить команду на каждом компьютере, указанном в текстовом файле)
  • Чтобы запустить проверку всех компьютеров в текущем домене, введите \\*вместо\\computer

Синтаксис

psexec \\computer[,computer[,..] [options] command [arguments]

psexec @run_file [options] command [arguments]

Параметры:

computer   The computer on which psexec will run command.
           Default = local system 
           To run against all computers in the current domain enter "\\*"
@run_file  Run command on every computer listed in the text file specified.

command    Name of the program to execute

...

-p psswd   Specify a password for user (optional). 
           Passed as clear text.
           If omitted, you will be prompted to enter a hidden password.

-u user    Specify a user name for login to remote computer(optional).

Источникpsexec


Дальнейшее чтение

  • Индекс AZ командной строки Windows CMD- Отличный справочник по всем вопросам, связанным с командной строкой Windows.
  • psexec- Выполнить процесс командной строки на удаленной машине. Выполнить процесс командной строки на удаленной машине.

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