internal IEnumerable <dynamic> ExecuteCommand(string commandOrScript, WSManConnectionInfo connectionInfo, PowerShellModulesToLoad modules, RemoteScriptFolders folders, IEnumerable <CommandParameter> parameters = null, bool logOutput = true) { var host = new ConDepPSHost(); using (var runspace = RunspaceFactory.CreateRunspace(host, connectionInfo)) { runspace.Open(); var ps = PowerShell.Create(); ps.Runspace = runspace; using (var pipeline = ps.Runspace.CreatePipeline( "set-executionpolicy remotesigned -force; $VerbosePreference = 'continue'; $DebugPreference = 'continue'")) { ConfigureConDepModule(pipeline, folders, modules); ConfigureConDepNodeModule(pipeline, folders, modules); ConfigureConDepDotNetLibrary(pipeline, folders, modules); ConfigureCommand(commandOrScript, parameters, pipeline); dynamic result = pipeline.Invoke(); if (pipeline.Error.Count > 0) { var errorCollection = new PowerShellErrors(); foreach (var exception in pipeline.Error.NonBlockingRead().OfType <ErrorRecord>()) { errorCollection.Add(exception.Exception); } throw errorCollection; } if (logOutput && result.Count > 0) { Logger.WithLogSection("Script output:", () => { foreach (var psObject in result) { if (psObject.ConDepResult == null) { Logger.Info(psObject.ToString()); } } }); } return(result); } } }
internal IEnumerable<dynamic> ExecuteCommand(string commandOrScript, WSManConnectionInfo connectionInfo, PowerShellModulesToLoad modules, RemoteScriptFolders folders, IEnumerable<CommandParameter> parameters = null, bool logOutput = true) { var host = new ConDepPSHost(); using (var runspace = RunspaceFactory.CreateRunspace(host, connectionInfo)) { runspace.Open(); var ps = PowerShell.Create(); ps.Runspace = runspace; using (var pipeline = ps.Runspace.CreatePipeline("set-executionpolicy remotesigned -force; $VerbosePreference = 'continue'; $DebugPreference = 'continue'")) { ConfigureConDepModule(pipeline, folders, modules); ConfigureConDepNodeModule(pipeline, folders, modules); ConfigureConDepDotNetLibrary(pipeline, folders, modules); ConfigureCommand(commandOrScript, parameters, pipeline); var result = pipeline.Invoke(); if (pipeline.Error.Count > 0) { var errorCollection = new PowerShellErrors(); foreach (var exception in pipeline.Error.NonBlockingRead().OfType<ErrorRecord>()) { errorCollection.Add(exception.Exception); } throw errorCollection; } if (logOutput && result.Count > 0) { Logger.WithLogSection("Script output", () => { foreach (var psObject in result) { Logger.Info(psObject.ToString()); } }); } return result; } } }