
Windows 7 のコマンド ラインのコマンドを使用して、プログラム (仮想マシン) をバックグラウンドで起動する必要がありますstart
。通常は次のように実行します。
start /b cmd yourprogram
しかし、いくつかの引数を渡す必要があり、次のようにします (/b
デバッグ情報を表示するためのフラグなし):
start C:\Users\USER>start "c:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -startvm "debian604 64"
次のエラーメッセージが表示されます:
Windows は '-startvm' を見つけることができません。名前を正しく入力したことを確認し、もう一度お試しください。
一方、最初に なしで現在のコマンド ライン ウィンドウで実行すると、start
仮想マシンは正常に実行されますが、フォアグラウンドで実行されます。
解決策はありますか?
答え1
start /b "" "c:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -startvm "debian604 64"
次のようにパラメータリストを読み取るとstart /?
:
START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
[command/program] [parameters]
"title" Title to display in window title bar.
command/program
If it is an internal cmd command or a batch file then
the command processor is run with the /K switch to cmd.exe.
This means that the window will remain after the command
has been run.
If it is not an internal cmd command or batch file then
it is a program and will run as either a windowed application
or a console application.
parameters These are the parameters passed to the command/program.
title
引用符で囲まれた ( )が必要です"
。プログラム パスに引用符が含まれていたため、タイトルとして解釈されました。明示的なタイトル(この場合は、空、""
)を追加すると機能します。
別の方法としては、/d
スイッチを使用してパスを指定する方法があります。具体的には、次のようになります。
start /b /d "c:\Program Files\Oracle\VirtualBox\" VBoxHeadless.exe -startvm "debian604 64"
スイッチの後の最初の引数は、引用符で囲まれていてもパスとして扱われるようです/d
。また、次の引数が引用符で囲まれていなければ、これは機能します。コマンド/プログラムとして認識されるものの後のすべては、そのコマンド/プログラムにパラメータとして渡されます。コマンド/プログラムの名前にスペースが含まれている場合、たとえばVBox Headless.exe
は引用符が必要になり、タイトルとして認識されるため、これは機能しないことに注意してください。
全体的には、最初の (明示的なタイトル) 方法の方がおそらく優れています。これは Microsoft 側の設計上の選択が悪かったため、「最初の引数は引用符で囲まれているか?」ではなく、タイトルのスイッチを追加すべきでした。
答え2
実際には、受け入れられた回答はまだ解決策ではありません。コマンドが実行された cmd ウィンドウを閉じると、実行中の仮想マシンを含む vboxheadless プロセスが終了します。
以下のアプローチを使用すると、パワーシェル独立したプロセスを実行します。
cmd で以下を実行します:
cd "c:\Program Files\Oracle\VirtualBox"
vboxmanage list vms
次のような結果が返されます:
"Webserver LAP" {8748b594-7e2d-4d8d-8785-999940766754}
次に、UUID を取得して、次のコマンドを実行します (引き続き cmd 内)。
powershell start-process 'C:\program files\oracle\virtualbox\vboxheadless' '-s 8748b594-7e2d-4d8d-8785-999940766754' -WindowStyle Hidden
著者に感謝この記事。