private void ProgressOnDataAdded(
            object sender, DataAddedEventArgs dataAddedEventArgs, RemoteComputer powershellComputer)
        {
            var progressRecord = ((PSDataCollection <ProgressRecord>)sender)[dataAddedEventArgs.Index];

            powershellComputer.LogProgress(powershellComputer, progressRecord);
        }
        private void VerboseOnDataAdded(
            object sender, DataAddedEventArgs dataAddedEventArgs, RemoteComputer powershellComputer)
        {
            var record = ((PSDataCollection <VerboseRecord>)sender)[dataAddedEventArgs.Index];

            WriteVerboseRecord(powershellComputer, record);
        }
        private void DebugOnDataAdded(
            object sender, DataAddedEventArgs dataAddedEventArgs, RemoteComputer powershellComputer)
        {
            var record = ((PSDataCollection <WarningRecord>)sender)[dataAddedEventArgs.Index];

            WriteDebugRecord(powershellComputer, record);
        }
        private void ErrorOnDataAdded(
            object sender, DataAddedEventArgs dataAddedEventArgs, RemoteComputer powershellComputer)
        {
            var record = ((PSDataCollection <ErrorRecord>)sender)[dataAddedEventArgs.Index];

            powershellComputer.ErrorCount++;
            WriteErrorRecord(powershellComputer, record);
        }
Beispiel #5
0
        public RemoteDesktopForm(RemoteComputer r)
        {
            clientComp = r;
            InitializeComponent();

            clientComp.RemoteComputerScreenHasChangedEvent += Drow;

            clientComp.SendMessage(new Model.CommandMessage(NetworkCommands.START_SENDING));
        }
        public List <RemoteComputer> RemoteConnectionInfo(string connectionInfo = null)
        {
            if (_remoteComputers == null)
            {
                _remoteComputers = new List <RemoteComputer>();
            }

            if (!string.IsNullOrEmpty(connectionInfo))
            {
                _remoteComputers = new List <RemoteComputer>();

                var lineSplit = Microsoft.VisualBasic.Strings.Split(connectionInfo, Environment.NewLine);
                foreach (var line in lineSplit)
                {
                    var    computerName = "";
                    string userDomain   = null;
                    string userName     = null;
                    string userPassword = null;

                    var remoteComputer = new RemoteComputer();

                    var splitChar = ' ';
                    if (line.Contains((char)9))
                    {
                        splitChar = (char)9;
                    }

                    var lineInfo = line.Split(splitChar);
                    computerName = lineInfo[0];
                    if (lineInfo.Length > 1)
                    {
                        userName = lineInfo[1];
                        if (userName.Contains(@"\"))
                        {
                            userDomain = userName.Split('\\')[0];
                            userName   = userName.Split('\\')[1];
                        }
                    }
                    if (lineInfo.Length > 2)
                    {
                        userPassword = lineInfo[1];
                    }

                    remoteComputer.UserName = userName;
                    remoteComputer.Domain   = userDomain;
                    remoteComputer.Name     = computerName;
                    remoteComputer.Password = userPassword;

                    _remoteComputers.Add(remoteComputer);
                }
            }

            return(_remoteComputers);
        }
Beispiel #7
0
        public void Refresh()
        {
            try
            {
                ApplicationBase app = LcpsDbContext.DefaultApp;

                RemoteComputer c = new RemoteComputer(this.Server, app.LDAPDomainUserName, app.LDAPPassword);

                foreach(Win32_Share s in c.SharedFolders)
                {
                    AnvilTreeNode n = new AnvilTreeNode()
                    {
                        Text = s.Name,
                        Value = "\\\\" + this.Server + "\\" + s.Name,
                        SelectedItemGlyphCss = "fa-folder-open-o",
                        ItemGlyphCss = "fa-folder-o",
                        InitGlyph = "fa fa-folder-o",
                        LinkClass = "folder"
                    };

                    if (Recursive)
                    {
                        string sp = "\\\\" + this.Server + "\\" + s.Name;
                        try
                        {

                            DirectoryInfo d = new DirectoryInfo(sp);

                            GetFolders(d, ref n);
                        }
                        catch (Exception ex)
                        {
                            n.ItemError = ex;
                        }
                    }

                    Children.Add(n);
                }
            }
            catch(Exception ex)
            {
                throw new Exception("Error enumerating shares on server", ex);
            }
        }
Beispiel #8
0
        private void LogWmiErrorMessage(Exception ex, RemoteComputer machine = null)
        {
            var computerName = "";

            if (machine != null)
            {
                computerName = machine.Name;
            }

            var logPath    = Path.GetTempPath() + "\\" + computerName + "wmiLog.txt";
            var stackTrace = new StackTrace(ex, true);
            var frame      = stackTrace.GetFrame(0);
            var lineNumber = frame.GetFileColumnNumber();

            if (System.IO.File.Exists(logPath))
            {
                using (TextWriter sw = System.IO.File.AppendText(logPath))
                {
                    if (machine == null)
                    {
                        sw.WriteLine(ex.Message);
                    }
                    else
                    {
                        sw.WriteLine("Client Error: " + ex.Message + "," + computerName + "," + stackTrace.ToString());
                    }
                }
            }
            else
            {
                using (TextWriter sw = new StreamWriter(logPath))
                {
                    if (machine == null)
                    {
                        sw.WriteLine(ex.Message);
                    }
                    else
                    {
                        sw.WriteLine("Client Error: " + ex.Message + "," + computerName + "," + stackTrace.ToString());
                    }
                }
            }
        }
Beispiel #9
0
 public TaskManagerForm(RemoteComputer _comp)
 {
     computer = _comp;
     InitializeComponent();
 }
Beispiel #10
0
 public EjectDriveTask(RemoteComputer computer)
     : base(computer)
 {
     SetUpWmiConnection(WmiClass.Process);
 }
 private void WriteErrorRecord(RemoteComputer powershellComputer, ErrorRecord record)
 {
     powershellComputer.AddLogEntry(new LogEntry(powershellComputer.Name, record.ToString(), LogEntryType.Error));
 }
 private void WriteVerboseRecord(RemoteComputer powershellComputer, VerboseRecord record)
 {
     powershellComputer.AddLogEntry(new LogEntry(powershellComputer.Name, record.Message, LogEntryType.Verbose));
 }
 private void WriteWarningRecord(RemoteComputer powershellComputer, WarningRecord record)
 {
     powershellComputer.AddLogEntry(new LogEntry(powershellComputer.Name, record.Message, LogEntryType.Warning));
 }
        private async Task RunPowershell(RemoteComputer powershellComputer)
        {
            var connectionInfo = PowerShellSupport.CreateConnectionInfo(powershellComputer);

            await Task.Run(
                () => {
                try {
                    powershellComputer.JobStatus = PowerShellJobStatus.Connecting;

                    cancellationTokenSource.Token.ThrowIfCancellationRequested();


                    using (var runspace = RunspaceFactory.CreateRunspace(connectionInfo)) {
                        cancellationTokenSource.Token.ThrowIfCancellationRequested();
                        using (cancellationTokenSource.Token.Register(
                                   () => runspace.Close())) {
                            runspace.Open();
                        }
                        cancellationTokenSource.Token.ThrowIfCancellationRequested();

                        using (var powershell = PowerShell.Create()) {
                            cancellationTokenSource.Token.ThrowIfCancellationRequested();

                            powershell.Runspace = runspace;
                            foreach (var script in FileNames)
                            {
                                powershell.AddScript(File.ReadAllText(script));
                            }
                            var input  = new PSDataCollection <PSObject>();
                            var output = new PSDataCollection <PSObject>();
                            powershell.Streams.Error.DataAdded +=
                                (s, ev) => ErrorOnDataAdded(s, ev, powershellComputer);
                            powershell.Streams.Debug.DataAdded +=
                                (s, ev) => DebugOnDataAdded(s, ev, powershellComputer);
                            powershell.Streams.Progress.DataAdded +=
                                (s, ev) => ProgressOnDataAdded(s, ev, powershellComputer);
                            powershell.Streams.Verbose.DataAdded +=
                                (s, ev) => VerboseOnDataAdded(s, ev, powershellComputer);
                            powershell.Streams.Warning.DataAdded +=
                                (s, ev) => WarningOnDataAdded(s, ev, powershellComputer);

                            powershellComputer.JobStatus = PowerShellJobStatus.Invoking;


                            cancellationTokenSource.Token.ThrowIfCancellationRequested();
                            using (cancellationTokenSource.Token.Register(
                                       () => {
                                powershell.InvocationStateChanged += (sender, args) => {
                                    switch (args.InvocationStateInfo.State)
                                    {
                                    case PSInvocationState.Failed:
                                        powershellComputer.JobStatus = PowerShellJobStatus.Failed;
                                        break;

                                    case PSInvocationState.Completed:
                                        powershellComputer.JobStatus = PowerShellJobStatus.Completed;
                                        break;

                                    case PSInvocationState.Stopping:
                                        powershellComputer.JobStatus = PowerShellJobStatus.Cancelling;

                                        break;

                                    case PSInvocationState.Stopped:
                                        powershellComputer.JobStatus = PowerShellJobStatus.Cancelled;

                                        break;
                                    }
                                };
                                powershell.Stop();
                            })) {
                                powershell.Invoke(input, output);
                            }
                            cancellationTokenSource.Token.ThrowIfCancellationRequested();
                            powershellComputer.JobStatus = PowerShellJobStatus.Completed;
                        }
                    }
                }
                catch (RemoteException e) {
                    if (cancellationTokenSource.IsCancellationRequested)
                    {
                        powershellComputer.JobStatus = PowerShellJobStatus.Cancelled;
                        return;
                    }
                    throw;
                }
                catch (PSRemotingDataStructureException ex) {
                    if (ex?.ErrorRecord?.Exception?.Message == "The pipeline has been stopped.")
                    {
                        powershellComputer.JobStatus = PowerShellJobStatus.Cancelled;
                    }
                }
                catch (PSRemotingTransportException ex) {
                    if (ex.ErrorRecord != null)
                    {
                        WriteErrorRecord(powershellComputer, ex.ErrorRecord);
                    }
                    powershellComputer.JobStatus = PowerShellJobStatus.CouldntConnect;
                }
                catch (OperationCanceledException ex) {
                    switch (powershellComputer.JobStatus)
                    {
                    case PowerShellJobStatus.Waiting:
                    case PowerShellJobStatus.Invoking:
                    case PowerShellJobStatus.Connecting:
                    case PowerShellJobStatus.Cancelling:
                        powershellComputer.JobStatus = PowerShellJobStatus.Cancelled;
                        break;
                    }
                }
                catch (Exception ex) {
                    powershellComputer.JobStatus = PowerShellJobStatus.Failed;

                    MessageBox.Show(
                        "An internal error has occurred!\n" + ex, "Internal error", MessageBoxButton.OK,
                        MessageBoxImage.Error);
                }
            });
        }