Примусове відключення Windows VM через ACPI або скрипт


1

На роботі у нас з'явився VM для Windows Server 2003, який ми хочемо вимкнути, коли відключена хост-операційна система (Linux). У нас це працює, за винятком випадків, коли користувач увійшов у систему та заблокував екран. Здається, що Windows не закриється, коли екран заблокований.

Ми досліджуємо способи запобігти автоматичному блокуванню, коли користувач неактивний, але це не зовсім ідеально. Чи є щось, що ми можемо налаштувати, або якимось чином ми можемо його скриптувати, щоб Windows вимкнулася, незалежно від того, що робити з будь-яким користувачем?

Якщо ми не закриємо Windows чистою мірою, ми ризикуємо зіпсувати всю віртуальну машину. У нашому середовищі, коли приймаюча ОС отримує сигнал ACPI, у нас є 120 секунд, щоб вимкнути все, перш ніж система буде примусово вимкнена.

Ми досить гуглили це, але поки що не пощастило. Ми все ще шукаємо налаштування реєстру для куріння.

Відповіді:


1

Використовуйте функцію віддаленого відключення в MSRPC з прапором "примусити", щоб перекрити заблоковані сеанси чи вивішені процеси. Якщо Samba встановлена, вона може використовуватися як:

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

(Еквівалентна команда Windows є shutdown -m \\vm-hostname -s -t 0 -f.)

Крім того, ssh у Windows VM і запустіть shutdown -s -t 0 -fтаким чином. Існує кілька безкоштовних серверів SSH для Windows, таких як Bitvise WinSSHd.

Усі три методи (навіть якщо ви shutdownпереходите через SSH або локально) потребують облікового запису з привілеєм SeRemoteShutdown , за замовчуванням адміністратором.


0

У Windows є функція EMS, яка надає вам доступ через послідовний порт. Хоча ви можете фактично отримати робочий cmd.exeекземпляр через серійний, ви також можете увійти в просту консоль, яка дозволяє також видавати команду відключення. Ця консоль повинна працювати навіть у тому випадку, коли система вийшла з ладу або ваша віртуальна мережа вимкнута або жахливо пошкоджена (ви можете отримати навіть останній текст IIRC BSOD).

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.