3

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 ответ1

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


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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .