ホストXPサーバーからWindows VMゲストマシンにACPIシャットダウンコマンドを発行すると、Windowsをシャットダウンする必要があります。
問題は、Windowsは単にシャットダウンするのではなく、常に何らかの質問をしたいということです。ホストマシンからのシャットダウンを自動化できるように、何が実行されているか、何が起こっているかに関係なく、信頼できるシャットダウンが必要です。しかし、プラグを抜くだけでなく、できるだけ優雅にしたいと思います。
いくつかの問題:
ユーザーがログインしている場合、ACPIシャットダウンにより、「他のユーザーがログインしている間にシャットダウンしてもよろしいですか」というボックスが表示されます。そしてこれは、誰かがマシンに接続して「はい」をクリックするまでシャットダウンを防ぎます。この場合、必要に応じて強制的にすべてのユーザーを正常にログアウトし、昇格せずにシャットダウンするように最善を尽くす必要があります。
ビジーまたは応答しないプログラム、またはデータの保存を要求するプログラムは、ユーザーがプロンプトに応答するまでWindowsがシャットダウンしないようにすることができます。これはデータの保存を試み、応答しないプログラムを30秒待つ必要がありますが、頑固なプログラムでは積極的になるはずです。 「いや、時間切れです!3、2、1、さようなら!」
変更できるレジストリ設定はありますか?
ACPI_Shutdown: "Shut down if Windows feels like it"
に
ACPI_Shutdown: "Just do it. Kill programs, bump users, try to be graceful about it, but when I come back, I expect you to be off."
これは、ACPIシャットダウンコマンドに応答する必要があり、スクリプトがACPI電源ボタンによってトリガーされない限り、Windows上のスクリプトではありません。これがレジストリオプションで変更できることを願っています。
なんらかの方法でVMにリモート接続し、ユーザーにプロンプトを表示せずにシャットダウンを開始するshutdown -s -t 0
コマンドを発行した方がよいでしょう。
SysinternalのPsExecを使用して、スクリプトまたはバッチファイルからこれを行うことができます。
または、仮想シリアルポートをVMに追加し、Windows XP Special Administration Consoleを有効にして、SAC経由でコマンドを発行します。スクリプト/バッチファイル経由でSACにコマンドを発行します。より複雑ですが、XPインスタンスのネットワークが機能していない場合でも、シャットダウンを実行できます。
更新:これはVista/7の新しいことかもしれません-shutdown
コマンドには/p
フラグがあり、コマンドヘルプによると「タイムアウトなしでローカルコンピューターの電源を切るか、警告。"
したがって、 -気にしないでください。私のxpマシンに飛び乗っただけで、/ pオプションがありません...shutdown -s -p -f
を試して、何が得られるかを確認してください。
Windowsの場合XP Ubuntuホストで次のコマンドを使用しています:
VBoxManage guestcontrol "WinXPVM" execute --image "C:\ Windows\system32\shutdown.exe" --username put_username_here --password put_password_here --- s -f -t 10
最後の引数は、実際のシャットダウンが開始するまでの時間です。すぐに開始する場合は、-t0に変更できます。
これが誰かに役立つことを願っています:)
OSとの追加の対話を必要とせずにWindowsXP/7がACPIPowerDownイベントを処理できるようにする、いくつかのレジストリ、グループポリシー値があるようです。また、コントロールパネル/電源オプションが電源ボタンのシャットダウンに設定されていることを確認し、スリープ状態の監視を無効にする必要がある場合もあります。
次のレジストリキー/値を追加/設定します
[DWORD] HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\shutdownwithoutlogon=1
[DWORD] HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\ShutdownWarningDialogTimeout=1
警告ダイアログがタイムアウトしない場合は、以下を追加できます(warning*)
[DWORD] HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Error Message Instrument\EnableDefaultReply=1
*これにより、ウィンドウは、アクティブなユーザーのログオフを強制するなど、追加のダイアログに自動的に応答します。
次のグループポリシーキー/値を追加/設定します
Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options\Shutdown: Allow system to be shut down without having to log on=Enabled
Computer Configuration\Administrative Templates\System\Display Shutdown Event Tracker=Disabled