mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-22 07:03:38 +00:00
v2v: windows: Add a helper function for installing Powershell firstboot scripts.
This commit is contained in:
@@ -678,6 +678,7 @@ check_PROGRAMS += v2v_unit_tests var_expander_tests
|
||||
endif
|
||||
|
||||
v2v_unit_tests_BOBJECTS = \
|
||||
$(top_builddir)/customize/firstboot.cmo \
|
||||
types.cmo \
|
||||
uefi.cmo \
|
||||
utils.cmo \
|
||||
|
||||
@@ -45,3 +45,26 @@ and check_app { Guestfs.app2_name = name;
|
||||
publisher =~ rex_avg_tech
|
||||
|
||||
and (=~) str rex = PCRE.matches rex str
|
||||
|
||||
(* Unfortunately Powershell scripts cannot be directly executed
|
||||
* (unless some system config changes are made which for other
|
||||
* reasons we don't want to do) and so we have to run this via
|
||||
* a regular batch file.
|
||||
*)
|
||||
let install_firstboot_powershell g { Types.i_windows_systemroot; i_root }
|
||||
filename code =
|
||||
let tempdir = sprintf "%s/Temp" i_windows_systemroot in
|
||||
g#mkdir_p tempdir;
|
||||
let code = String.concat "\r\n" code ^ "\r\n" in
|
||||
g#write (sprintf "%s/%s" tempdir filename) code;
|
||||
|
||||
(* Powershell interpreter. Should we check this exists? XXX *)
|
||||
let ps_exe =
|
||||
i_windows_systemroot ^
|
||||
"\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" in
|
||||
|
||||
(* Windows path to the Powershell script. *)
|
||||
let ps_path = i_windows_systemroot ^ "\\Temp\\" ^ filename in
|
||||
|
||||
let fb = sprintf "%s -ExecutionPolicy ByPass -file %s" ps_exe ps_path in
|
||||
Firstboot.add_firstboot_script g i_root filename fb
|
||||
|
||||
@@ -21,3 +21,9 @@
|
||||
val detect_antivirus : Types.inspect -> bool
|
||||
(** Return [true] if anti-virus (AV) software was detected in
|
||||
this Windows guest. *)
|
||||
|
||||
val install_firstboot_powershell : Guestfs.guestfs -> Types.inspect ->
|
||||
string -> string list -> unit
|
||||
(** [install_powershell_firstboot g inspect filename code] installs a
|
||||
Powershell script (the lines of code) as a firstboot script in
|
||||
the Windows VM. *)
|
||||
|
||||
Reference in New Issue
Block a user