Example #1
0
        public Task ExecuteAsync(QueryResult result)
        {
            switch (result)
            {
            case OpenPowerShellResult _:
                _processStarter.OpenApplication("powershell", "-NoExit");
                break;

            case PowerShellFileResult fileResult:
                if (fileResult.RunInExternalShell)
                {
                    OpenDefault.PathOrUrl($"powershell -NoExit -File {fileResult.FilePath} {fileResult.Arguments}");
                }
                else
                {
                    using (var shellSession = PowerShell.Create())
                    {
                        shellSession.AddScript("Set-ExecutionPolicy Bypass -Scope Process");
                        shellSession.AddScript(fileResult.FilePath);
                        shellSession.Invoke();
                    }
                }
                break;

            case PowerShellCommandResult powershellResult:
                if (powershellResult.RunInExternalShell)
                {
                    OpenDefault.PathOrUrl($"powershell -NoExit -Command {powershellResult.Command}");
                }
                else
                {
                    using (var shellSession = PowerShell.Create())
                    {
                        shellSession.AddScript(powershellResult.Command);
                        var executionOutput = shellSession.Invoke(powershellResult.Command);
                        if (shellSession.HadErrors)
                        {
                            _logger.Information("Command {powerShellCommand} had errors", powershellResult.Command);
                        }
                    }
                }
                break;
            }

            return(Task.CompletedTask);
        }