I made a oneliner to create windows 10 VMs easily

shodan

Active Member
Sep 1, 2022
254
69
33
The first two version are CLI only, non interactive

The next two version use dialog, so you get to review your settings with a nice GUI

1786260545182.png

#win10 basic example cli
Code:
VMID=                                NAME=              MAC=DE:AD:BE:EF:42:70 DISK=64 RAM=6/25% CORE=90% OS=win10 ISO=win10u,virtcd FIRMWARE=    MACHINE=q35 AGENT=    STORAGE=                                                                                         BRIDGE=      FIREWALL=   CACHE=writeback VGA=    AUDIO=    BOOT=               START=   ; if qm create "${VMID:=$(pvesh get /cluster/nextid)}" --name "${NAME:-${OS:-win10}-$VMID}" --machine "$(if [ "${MACHINE:-q35}" = 440 ]; then printf pc; else printf q35; fi)" --ostype "${OS:-win10}" --cpu host --cores "$(awk -v r="${CORE:-90%}" -v h="$(nproc)" 'BEGIN{n=split(r,a,"/");for(i=1;i<=n;i++){if(a[i]~/%$/){sub(/%$/,"",a[i]);p=a[i]+0}else if(a[i]!="")m=a[i]+0}v=p?int(h*p/100):0;c=(v>m?v:m);if(c<1)c=1;if(c>h)c=h;print c}')" --memory "$(awk -v r="${RAM:-6}" 'BEGIN{n=split(r,a,"/");for(i=1;i<=n;i++){if(a[i]~/%$/){sub(/%$/,"",a[i]);p=a[i]+0}else if(a[i]!="")m=(a[i]+0)*1024}}/^MemTotal:/{v=int($2*p/102400);print (v>m?v:m);exit}' /proc/meminfo)" --virtio0 "${STORAGE:=$(pvesm status --content images --enabled 1 | awk 'NR>1&&$3=="active"{print $1;exit}')}:${DISK:-64},cache=${CACHE:-writeback},discard=on,iothread=1" $(IDE=2; if [[ ",${ISO:-}," == *,win10u,* ]]; then printf '%s\n' "--ide$IDE" 'local:iso/Win10_22H2_EnglishInternational_x64.unattended.latest.iso,media=cdrom'; IDE=$((IDE+1)); fi; if [[ ",${ISO:-}," == *,win10,* ]]; then printf '%s\n' "--ide$IDE" 'local:iso/Win10_22H2_EnglishInternational_x64.unattended.latest.iso,media=cdrom'; IDE=$((IDE+1)); fi; if [[ ",${ISO:-}," == *,win10e,* ]]; then printf '%s\n' "--ide$IDE" 'local:iso/Win10_22H2_English_x64.iso,media=cdrom'; IDE=$((IDE+1)); fi; if [[ ",${ISO:-}," == *,virtcd,* ]]; then printf '%s\n' "--ide$IDE" 'local:iso/virtio-win-latest.iso,media=cdrom'; IDE=$((IDE+1)); fi) --net0 "virtio=$MAC,bridge=${BRIDGE:-vmbr0},firewall=$(if [ "${FIREWALL:-no}" = yes ]; then printf 1; else printf 0; fi)" --boot "order=${BOOT:-virtio0;ide2}" $(if [ "${AUDIO:-yes}" = yes ]; then printf '%s\n' --audio0 device=ich9-intel-hda,driver=none; fi) $(if [ "${AUDIO:-yes}" = spice ]; then printf '%s\n' --audio0 device=ich9-intel-hda,driver=spice; fi) $(if [ "${AGENT:-yes}" = yes ]; then printf '%s\n' --agent enabled=1,fstrim_cloned_disks=1; fi) $(if [ "${VGA:-std}" = spice ]; then printf '%s\n' --vga qxl; else printf '%s\n' --vga "${VGA:-std}"; fi) $(if [ "${FIRMWARE:-efi}" = efi ]; then printf '%s\n' --bios ovmf --efidisk0 "$STORAGE:4,efitype=4m,pre-enrolled-keys=1"; fi) $(if [ "${FIRMWARE:-efi}" = bios ]; then printf '%s\n' --bios seabios; fi); then if [ "${START:-yes}" = yes ]; then if qm start "$VMID"; then echo "SUCCESS: VM $VMID named ${NAME:-${OS:-win10}-$VMID} was created on $STORAGE and started successfully"; else RC=$?; echo "WARNING: VM $VMID named ${NAME:-${OS:-win10}-$VMID} was created on $STORAGE but failed to start with exit code $RC" >&2; false; fi; else echo "SUCCESS: VM $VMID named ${NAME:-${OS:-win10}-$VMID} was created successfully on $STORAGE and left stopped"; fi; else RC=$?; echo "ERROR: VM $VMID was not created; qm create exited with code $RC" >&2; false; fi

#win10 full example cli
Code:
VMID="$(pvesh get /cluster/nextid)"; NAME="win10-$VMID" MAC=DE:AD:BE:EF:42:70 DISK=64 RAM=6/25% CORE=90% OS=win10 ISO=win10u,virtcd FIRMWARE=efi MACHINE=q35 AGENT=yes STORAGE="$(pvesm status --content images --enabled 1 | awk 'NR>1&&$3=="active"{print $1;exit}')" BRIDGE=vmbr0 FIREWALL=no CACHE=writeback VGA=std AUDIO=yes BOOT='virtio0;ide2' START=yes; if qm create "${VMID:=$(pvesh get /cluster/nextid)}" --name "${NAME:-${OS:-win10}-$VMID}" --machine "$(if [ "${MACHINE:-q35}" = 440 ]; then printf pc; else printf q35; fi)" --ostype "${OS:-win10}" --cpu host --cores "$(awk -v r="${CORE:-90%}" -v h="$(nproc)" 'BEGIN{n=split(r,a,"/");for(i=1;i<=n;i++){if(a[i]~/%$/){sub(/%$/,"",a[i]);p=a[i]+0}else if(a[i]!="")m=a[i]+0}v=p?int(h*p/100):0;c=(v>m?v:m);if(c<1)c=1;if(c>h)c=h;print c}')" --memory "$(awk -v r="${RAM:-6}" 'BEGIN{n=split(r,a,"/");for(i=1;i<=n;i++){if(a[i]~/%$/){sub(/%$/,"",a[i]);p=a[i]+0}else if(a[i]!="")m=(a[i]+0)*1024}}/^MemTotal:/{v=int($2*p/102400);print (v>m?v:m);exit}' /proc/meminfo)" --virtio0 "${STORAGE:=$(pvesm status --content images --enabled 1 | awk 'NR>1&&$3=="active"{print $1;exit}')}:${DISK:-64},cache=${CACHE:-writeback},discard=on,iothread=1" $(IDE=2; if [[ ",${ISO:-}," == *,win10u,* ]]; then printf '%s\n' "--ide$IDE" 'local:iso/Win10_22H2_EnglishInternational_x64.unattended.latest.iso,media=cdrom'; IDE=$((IDE+1)); fi; if [[ ",${ISO:-}," == *,win10,* ]]; then printf '%s\n' "--ide$IDE" 'local:iso/Win10_22H2_EnglishInternational_x64.unattended.latest.iso,media=cdrom'; IDE=$((IDE+1)); fi; if [[ ",${ISO:-}," == *,win10e,* ]]; then printf '%s\n' "--ide$IDE" 'local:iso/Win10_22H2_English_x64.iso,media=cdrom'; IDE=$((IDE+1)); fi; if [[ ",${ISO:-}," == *,virtcd,* ]]; then printf '%s\n' "--ide$IDE" 'local:iso/virtio-win-latest.iso,media=cdrom'; IDE=$((IDE+1)); fi) --net0 "virtio=$MAC,bridge=${BRIDGE:-vmbr0},firewall=$(if [ "${FIREWALL:-no}" = yes ]; then printf 1; else printf 0; fi)" --boot "order=${BOOT:-virtio0;ide2}" $(if [ "${AUDIO:-yes}" = yes ]; then printf '%s\n' --audio0 device=ich9-intel-hda,driver=none; fi) $(if [ "${AUDIO:-yes}" = spice ]; then printf '%s\n' --audio0 device=ich9-intel-hda,driver=spice; fi) $(if [ "${AGENT:-yes}" = yes ]; then printf '%s\n' --agent enabled=1,fstrim_cloned_disks=1; fi) $(if [ "${VGA:-std}" = spice ]; then printf '%s\n' --vga qxl; else printf '%s\n' --vga "${VGA:-std}"; fi) $(if [ "${FIRMWARE:-efi}" = efi ]; then printf '%s\n' --bios ovmf --efidisk0 "$STORAGE:4,efitype=4m,pre-enrolled-keys=1"; fi) $(if [ "${FIRMWARE:-efi}" = bios ]; then printf '%s\n' --bios seabios; fi); then if [ "${START:-yes}" = yes ]; then if qm start "$VMID"; then echo "SUCCESS: VM $VMID named ${NAME:-${OS:-win10}-$VMID} was created on $STORAGE and started successfully"; else RC=$?; echo "WARNING: VM $VMID named ${NAME:-${OS:-win10}-$VMID} was created on $STORAGE but failed to start with exit code $RC" >&2; false; fi; else echo "SUCCESS: VM $VMID named ${NAME:-${OS:-win10}-$VMID} was created successfully on $STORAGE and left stopped"; fi; else RC=$?; echo "ERROR: VM $VMID was not created; qm create exited with code $RC" >&2; false; fi
 
  • Like
Reactions: waltar
#basic settings with GUI
Code:
VMID=                                NAME=              MAC=DE:AD:BE:EF:42:70 DISK=64 RAM=6/25% CORE=90% OS=win10 ISO=win10u,virtcd FIRMWARE=    MACHINE=q35 AGENT=    STORAGE=                                                                                         BRIDGE=      FIREWALL=   CACHE=writeback VGA= AUDIO=    BOOT=               START=   ; DO_CREATE=yes; VMID="${VMID:-$(pvesh get /cluster/nextid)}"; MAC="${MAC:-DE:AD:BE:EF:42:70}"; DISK="${DISK:-64}"; RAM="${RAM:-6}"; CORE="${CORE:-90%}"; OS="${OS:-win10}"; NAME="${NAME:-$OS-$VMID}"; FIRMWARE="${FIRMWARE:-efi}"; MACHINE="${MACHINE:-q35}"; AGENT="${AGENT:-yes}"; STORAGE="${STORAGE:-$(pvesm status --content images --enabled 1 | awk 'NR>1&&$3=="active"{print $1;exit}')}"; BRIDGE="${BRIDGE:-vmbr0}"; FIREWALL="${FIREWALL:-no}"; CACHE="${CACHE:-writeback}"; AUDIO="${AUDIO:-yes}"; BOOT="${BOOT:-virtio0;ide2}"; START="${START:-yes}"; if ! command -v dialog >/dev/null; then read -r -p "dialog is not installed. Install it now? [Y/n] " DIALOG_INSTALL; case "${DIALOG_INSTALL:-Y}" in [Yy]*) apt-get update && apt-get install -y dialog || echo "WARNING: dialog installation failed; continuing without UI." ;; esac; fi; if command -v dialog >/dev/null; then TMP="$(mktemp)"; if dialog --clear --title "Create Proxmox VM" --ok-label "Create" --cancel-label "Cancel" --output-fd 3 --form "Review or edit VM settings" 24 90 19 "Name:" 1 2 "$NAME" 1 24 55 0 "MAC:" 2 2 "$MAC" 2 24 55 0 "Disk (GB):" 3 2 "$DISK" 3 24 55 0 "RAM:" 4 2 "$RAM" 4 24 55 0 "Core:" 5 2 "$CORE" 5 24 55 0 "OS:" 6 2 "$OS" 6 24 55 0 "ISO:" 7 2 "$ISO" 7 24 55 0 "Firmware:" 8 2 "$FIRMWARE" 8 24 55 0 "Machine:" 9 2 "$MACHINE" 9 24 55 0 "Agent:" 10 2 "$AGENT" 10 24 55 0 "Storage:" 11 2 "$STORAGE" 11 24 55 0 "Bridge:" 12 2 "$BRIDGE" 12 24 55 0 "Firewall:" 13 2 "$FIREWALL" 13 24 55 0 "Cache:" 14 2 "$CACHE" 14 24 55 0 "VGA:" 15 2 "$VGA" 15 24 55 0 "Audio:" 16 2 "$AUDIO" 16 24 55 0 "Boot:" 17 2 "$BOOT" 17 24 55 0 "VMID:" 18 2 "$VMID" 18 24 55 0 "Start:" 19 2 "$START" 19 24 55 0 3>"$TMP"; then mapfile -t F < "$TMP"; NAME="${F[0]}"; MAC="${F[1]}"; DISK="${F[2]}"; RAM="${F[3]}"; CORE="${F[4]}"; OS="${F[5]}"; ISO="${F[6]}"; FIRMWARE="${F[7]}"; MACHINE="${F[8]}"; AGENT="${F[9]}"; STORAGE="${F[10]}"; BRIDGE="${F[11]}"; FIREWALL="${F[12]}"; CACHE="${F[13]}"; VGA="${F[14]}"; AUDIO="${F[15]}"; BOOT="${F[16]}"; VMID="${F[17]}"; START="${F[18]}"; else DO_CREATE=no; fi; rm -f "$TMP"; clear; [ "$DO_CREATE" = yes ] || echo "CANCELLED: No VM was created."; fi; if [ "$DO_CREATE" = yes ]; then if qm create "$VMID" --name "${NAME:-${OS:-win10}-$VMID}" --machine "$(if [ "${MACHINE:-q35}" = 440 ]; then printf pc; else printf q35; fi)" --ostype "${OS:-win10}" --cpu host --cores "$(awk -v r="${CORE:-90%}" -v h="$(nproc)" 'BEGIN{n=split(r,a,"/");for(i=1;i<=n;i++){if(a[i]~/%$/){sub(/%$/,"",a[i]);p=a[i]+0}else if(a[i]!="")m=a[i]+0}v=p?int(h*p/100):0;c=(v>m?v:m);if(c<1)c=1;if(c>h)c=h;print c}')" --memory "$(awk -v r="${RAM:-6}" 'BEGIN{n=split(r,a,"/");for(i=1;i<=n;i++){if(a[i]~/%$/){sub(/%$/,"",a[i]);p=a[i]+0}else if(a[i]!="")m=(a[i]+0)*1024}}/^MemTotal:/{v=int($2*p/102400);print (v>m?v:m);exit}' /proc/meminfo)" --virtio0 "${STORAGE}:${DISK:-64},cache=${CACHE:-writeback},discard=on,iothread=1" $(IDE=2; if [[ ",${ISO:-}," == *,win10u,* ]]; then printf '%s\n' "--ide$IDE" 'local:iso/Win10_22H2_EnglishInternational_x64.unattended.latest.iso,media=cdrom'; IDE=$((IDE+1)); fi; if [[ ",${ISO:-}," == *,win10,* ]]; then printf '%s\n' "--ide$IDE" 'local:iso/Win10_22H2_EnglishInternational_x64.unattended.latest.iso,media=cdrom'; IDE=$((IDE+1)); fi; if [[ ",${ISO:-}," == *,win10e,* ]]; then printf '%s\n' "--ide$IDE" 'local:iso/Win10_22H2_English_x64.iso,media=cdrom'; IDE=$((IDE+1)); fi; if [[ ",${ISO:-}," == *,virtcd,* ]]; then printf '%s\n' "--ide$IDE" 'local:iso/virtio-win-latest.iso,media=cdrom'; IDE=$((IDE+1)); fi) --net0 "virtio=${MAC:-DE:AD:BE:EF:42:70},bridge=${BRIDGE:-vmbr0},firewall=$(if [ "${FIREWALL:-no}" = yes ]; then printf 1; else printf 0; fi)" --boot "order=${BOOT:-virtio0;ide2}" $(if [ "${AUDIO:-yes}" = yes ]; then printf '%s\n' --audio0 device=ich9-intel-hda,driver=none; fi) $(if [ "${AUDIO:-yes}" = spice ]; then printf '%s\n' --audio0 device=ich9-intel-hda,driver=spice; fi) $(if [ "${AGENT:-yes}" = yes ]; then printf '%s\n' --agent enabled=1,fstrim_cloned_disks=1; fi) $(if [ -n "${VGA:-}" ]; then if [ "$VGA" = spice ]; then printf '%s\n' --vga qxl; else printf '%s\n' --vga "$VGA"; fi; fi) $(if [ "${FIRMWARE:-efi}" = efi ]; then printf '%s\n' --bios ovmf --efidisk0 "$STORAGE:4,efitype=4m,pre-enrolled-keys=1"; fi) $(if [ "${FIRMWARE:-efi}" = bios ]; then printf '%s\n' --bios seabios; fi); then if [ "${START:-yes}" = yes ]; then if qm start "$VMID"; then echo "SUCCESS: VM $VMID named ${NAME:-${OS:-win10}-$VMID} was created on $STORAGE and started successfully"; else RC=$?; echo "WARNING: VM $VMID named ${NAME:-${OS:-win10}-$VMID} was created on $STORAGE but failed to start with exit code $RC" >&2; false; fi; else echo "SUCCESS: VM $VMID named ${NAME:-${OS:-win10}-$VMID} was created successfully on $STORAGE and left stopped"; fi; else RC=$?; echo "ERROR: VM $VMID was not created; qm create exited with code $RC" >&2; false; fi; fi

#explicit default settings with GUI
Code:
VMID="$(pvesh get /cluster/nextid)"; NAME="win10-$VMID" MAC=DE:AD:BE:EF:42:70 DISK=64 RAM=6/25% CORE=90% OS=win10 ISO=win10u,virtcd FIRMWARE=efi MACHINE=q35 AGENT=yes STORAGE="$(pvesm status --content images --enabled 1 | awk 'NR>1&&$3=="active"{print $1;exit}')" BRIDGE=vmbr0 FIREWALL=no CACHE=writeback VGA= AUDIO=yes BOOT='virtio0;ide2' START=yes; DO_CREATE=yes; VMID="${VMID:-$(pvesh get /cluster/nextid)}"; MAC="${MAC:-DE:AD:BE:EF:42:70}"; DISK="${DISK:-64}"; RAM="${RAM:-6}"; CORE="${CORE:-90%}"; OS="${OS:-win10}"; NAME="${NAME:-$OS-$VMID}"; FIRMWARE="${FIRMWARE:-efi}"; MACHINE="${MACHINE:-q35}"; AGENT="${AGENT:-yes}"; STORAGE="${STORAGE:-$(pvesm status --content images --enabled 1 | awk 'NR>1&&$3=="active"{print $1;exit}')}"; BRIDGE="${BRIDGE:-vmbr0}"; FIREWALL="${FIREWALL:-no}"; CACHE="${CACHE:-writeback}"; AUDIO="${AUDIO:-yes}"; BOOT="${BOOT:-virtio0;ide2}"; START="${START:-yes}"; if ! command -v dialog >/dev/null; then read -r -p "dialog is not installed. Install it now? [Y/n] " DIALOG_INSTALL; case "${DIALOG_INSTALL:-Y}" in [Yy]*) apt-get update && apt-get install -y dialog || echo "WARNING: dialog installation failed; continuing without UI." ;; esac; fi; if command -v dialog >/dev/null; then TMP="$(mktemp)"; if dialog --clear --title "Create Proxmox VM" --ok-label "Create" --cancel-label "Cancel" --output-fd 3 --form "Review or edit VM settings" 24 90 19 "Name:" 1 2 "$NAME" 1 24 55 0 "MAC:" 2 2 "$MAC" 2 24 55 0 "Disk (GB):" 3 2 "$DISK" 3 24 55 0 "RAM:" 4 2 "$RAM" 4 24 55 0 "Core:" 5 2 "$CORE" 5 24 55 0 "OS:" 6 2 "$OS" 6 24 55 0 "ISO:" 7 2 "$ISO" 7 24 55 0 "Firmware:" 8 2 "$FIRMWARE" 8 24 55 0 "Machine:" 9 2 "$MACHINE" 9 24 55 0 "Agent:" 10 2 "$AGENT" 10 24 55 0 "Storage:" 11 2 "$STORAGE" 11 24 55 0 "Bridge:" 12 2 "$BRIDGE" 12 24 55 0 "Firewall:" 13 2 "$FIREWALL" 13 24 55 0 "Cache:" 14 2 "$CACHE" 14 24 55 0 "VGA:" 15 2 "$VGA" 15 24 55 0 "Audio:" 16 2 "$AUDIO" 16 24 55 0 "Boot:" 17 2 "$BOOT" 17 24 55 0 "VMID:" 18 2 "$VMID" 18 24 55 0 "Start:" 19 2 "$START" 19 24 55 0 3>"$TMP"; then mapfile -t F < "$TMP"; NAME="${F[0]}"; MAC="${F[1]}"; DISK="${F[2]}"; RAM="${F[3]}"; CORE="${F[4]}"; OS="${F[5]}"; ISO="${F[6]}"; FIRMWARE="${F[7]}"; MACHINE="${F[8]}"; AGENT="${F[9]}"; STORAGE="${F[10]}"; BRIDGE="${F[11]}"; FIREWALL="${F[12]}"; CACHE="${F[13]}"; VGA="${F[14]}"; AUDIO="${F[15]}"; BOOT="${F[16]}"; VMID="${F[17]}"; START="${F[18]}"; else DO_CREATE=no; fi; rm -f "$TMP"; clear; [ "$DO_CREATE" = yes ] || echo "CANCELLED: No VM was created."; fi; if [ "$DO_CREATE" = yes ]; then if qm create "$VMID" --name "${NAME:-${OS:-win10}-$VMID}" --machine "$(if [ "${MACHINE:-q35}" = 440 ]; then printf pc; else printf q35; fi)" --ostype "${OS:-win10}" --cpu host --cores "$(awk -v r="${CORE:-90%}" -v h="$(nproc)" 'BEGIN{n=split(r,a,"/");for(i=1;i<=n;i++){if(a[i]~/%$/){sub(/%$/,"",a[i]);p=a[i]+0}else if(a[i]!="")m=a[i]+0}v=p?int(h*p/100):0;c=(v>m?v:m);if(c<1)c=1;if(c>h)c=h;print c}')" --memory "$(awk -v r="${RAM:-6}" 'BEGIN{n=split(r,a,"/");for(i=1;i<=n;i++){if(a[i]~/%$/){sub(/%$/,"",a[i]);p=a[i]+0}else if(a[i]!="")m=(a[i]+0)*1024}}/^MemTotal:/{v=int($2*p/102400);print (v>m?v:m);exit}' /proc/meminfo)" --virtio0 "${STORAGE}:${DISK:-64},cache=${CACHE:-writeback},discard=on,iothread=1" $(IDE=2; if [[ ",${ISO:-}," == *,win10u,* ]]; then printf '%s\n' "--ide$IDE" 'local:iso/Win10_22H2_EnglishInternational_x64.unattended.latest.iso,media=cdrom'; IDE=$((IDE+1)); fi; if [[ ",${ISO:-}," == *,win10,* ]]; then printf '%s\n' "--ide$IDE" 'local:iso/Win10_22H2_EnglishInternational_x64.unattended.latest.iso,media=cdrom'; IDE=$((IDE+1)); fi; if [[ ",${ISO:-}," == *,win10e,* ]]; then printf '%s\n' "--ide$IDE" 'local:iso/Win10_22H2_English_x64.iso,media=cdrom'; IDE=$((IDE+1)); fi; if [[ ",${ISO:-}," == *,virtcd,* ]]; then printf '%s\n' "--ide$IDE" 'local:iso/virtio-win-latest.iso,media=cdrom'; IDE=$((IDE+1)); fi) --net0 "virtio=${MAC:-DE:AD:BE:EF:42:70},bridge=${BRIDGE:-vmbr0},firewall=$(if [ "${FIREWALL:-no}" = yes ]; then printf 1; else printf 0; fi)" --boot "order=${BOOT:-virtio0;ide2}" $(if [ "${AUDIO:-yes}" = yes ]; then printf '%s\n' --audio0 device=ich9-intel-hda,driver=none; fi) $(if [ "${AUDIO:-yes}" = spice ]; then printf '%s\n' --audio0 device=ich9-intel-hda,driver=spice; fi) $(if [ "${AGENT:-yes}" = yes ]; then printf '%s\n' --agent enabled=1,fstrim_cloned_disks=1; fi) $(if [ -n "${VGA:-}" ]; then if [ "$VGA" = spice ]; then printf '%s\n' --vga qxl; else printf '%s\n' --vga "$VGA"; fi; fi) $(if [ "${FIRMWARE:-efi}" = efi ]; then printf '%s\n' --bios ovmf --efidisk0 "$STORAGE:4,efitype=4m,pre-enrolled-keys=1"; fi) $(if [ "${FIRMWARE:-efi}" = bios ]; then printf '%s\n' --bios seabios; fi); then if [ "${START:-yes}" = yes ]; then if qm start "$VMID"; then echo "SUCCESS: VM $VMID named ${NAME:-${OS:-win10}-$VMID} was created on $STORAGE and started successfully"; else RC=$?; echo "WARNING: VM $VMID named ${NAME:-${OS:-win10}-$VMID} was created on $STORAGE but failed to start with exit code $RC" >&2; false; fi; else echo "SUCCESS: VM $VMID named ${NAME:-${OS:-win10}-$VMID} was created successfully on $STORAGE and left stopped"; fi; else RC=$?; echo "ERROR: VM $VMID was not created; qm create exited with code $RC" >&2; false; fi; fi
 
  • Like
Reactions: waltar