public override Process CreateProcess(List <string> procParams, IList <IXenObject> targets)
        {
            Registry.AssertPowerShellInstalled();
            Registry.AssertPowerShellExecutionPolicyNonRestricted();

            string command = MakeInvocationExpression(Filename, Function, procParams, Params, targets, Debug);

            //escape the entire command statement as it is being passed into the -Command parameter in quotes
            command = EscapeQuotes(EscapeBackSlashes(command));

            return(new Process
            {
                StartInfo =
                {
                    FileName        = PluginDescriptor.PowerShellExecutable,
                    Arguments       = $"-NoLogo -Command \"Import-Module XenServerPSModule; {command}\"",
                    UseShellExecute = false,
                    CreateNoWindow  = !Window,
                    WindowStyle     = Window ? ProcessWindowStyle.Normal : ProcessWindowStyle.Hidden
                }
            });
        }