
start
Windows 7 명령줄의 명령을 사용하여 백그라운드에서 프로그램(가상 머신)을 시작해야 합니다 . 일반적으로 다음과 같이 수행합니다.
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
작가님 덕분에이 기사.