1

На работе у нас есть виртуальная машина Windows Server 2003, которую мы хотим выключить, когда операционная система хоста (Linux) завершает работу. У нас это работает, за исключением случаев, когда пользователь вошел в систему и заблокировал экран. Кажется, что Windows не выключится, когда экран заблокирован.

Мы исследуем способы предотвращения автоматической блокировки, когда пользователь неактивен, но это не совсем идеально. Есть ли что-то, что мы можем настроить или каким-то образом мы можем написать это, чтобы Windows закрывалась, независимо от того, чем занимается любой пользователь?

Если мы не выключим Windows полностью, мы рискуем испортить всю ВМ. В нашей среде, как только ОС хоста получает сигнал ACPI, у нас есть 120 секунд, чтобы отключить все, прежде чем система будет принудительно отключена.

Мы немного погуглили, но пока не повезло. Мы все еще ищем настройки реестра для курящих пистолетов.

2 ответа2

1

Используйте функцию удаленного отключения в MSRPC с флагом "force" для переопределения заблокированных сеансов или зависших процессов. Если Samba установлена, ее можно использовать как:

net rpc -S vm-hostname shutdown -t 0 -f

(Эквивалентная команда Windows: shutdown -m \\vm-hostname -s -t 0 -f .)

В качестве альтернативы, введите ssh в виртуальную машину Windows и выполните команду shutdown -s -t 0 -f . Есть несколько бесплатных SSH-серверов для Windows, таких как Bitvise WinSSHd.

Для всех трех методов (даже если вы выполняете shutdown через SSH или локально) требуется учетная запись с привилегией SeRemoteShutdown , администратором по умолчанию.

0

Windows имеет функцию EMS, которая дает вам доступ через последовательный порт. Несмотря на то, что вы можете получить работающий экземпляр cmd.exe через последовательный порт, вы также можете войти в простую консоль, которая также позволяет выполнить команду выключения. Эта консоль должна работать даже в случае сбоя системы или если ваша виртуальная сеть отключена или ужасно повреждена (вы даже можете получить последний текст BSOD IIRC).

Это когда я работал под управлением Windows Server 2003 под qemu, что позволило перенаправить виртуальный COM1 на локальный "telnet" -подобный порт. Таким образом, я смог использовать expect чтобы выдать чистую последовательность выключения виртуальной машины (и я мог также использовать telnet для непосредственного общения с ней, если бы захотел).

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