Пример #1
0
        public void Execute(IActivityRequest request, IActivityResponse response)
        {
            SecureString password = new SecureString();

            settings.Password.ToCharArray().ToList().ForEach(password.AppendChar);
            PSCredential creds = new PSCredential(settings.UserName, password);

            PSRunspaceCreationData creationData = new PSRunspaceCreationData();

            creationData.Credentials        = creds;
            creationData.Hostname           = request.Inputs["Computer name"].AsString();
            creationData.Port               = request.Inputs["Connection port"].AsInt32();
            creationData.UseSsl             = request.Inputs["Use SSL"].AsBoolean();
            creationData.LoadMachineProfile = request.Inputs["Load host profile"].AsBoolean();
            creationData.Name               = request.Inputs["Session name"].AsString().ToUpper();

            IRunspaceManager      runspaceManager = PSRunspaceManger.CreateClient();
            RemoteOperationResult result          = runspaceManager.OpenRunspace(creationData);

            if (!result.Success)
            {
                throw new Exception(result.Message);
            }

            response.Publish("Session name", creationData.Name);
        }
Пример #2
0
        public void Execute(IActivityRequest request, IActivityResponse response)
        {
            IRunspaceManager      runspaceManager = PSRunspaceManger.CreateClient();
            RemoteOperationResult result          = runspaceManager.CloseRunspace(request.Inputs["Session name"].AsString().ToUpper());

            if (!result.Success)
            {
                throw new Exception(result.Message);
            }
        }
Пример #3
0
        public void Execute(IActivityRequest request, IActivityResponse response)
        {
            IRunspaceManager      runspaceManager = PSRunspaceManger.CreateClient();
            RemoteOperationResult result          = runspaceManager.ExecuteCommand(request.Inputs["Session name"].AsString().ToUpper(), request.Inputs["Script code"].AsString());

            if (!result.Success)
            {
                throw new Exception(result.Message);
            }

            response.Publish("Session name", request.Inputs["Session name"].AsString().ToUpper());
            response.Publish("Script result", result.Message);
        }
        public void Execute(IActivityRequest request, IActivityResponse response)
        {
            string                command         = string.Format("Set-Variable {0} \"{1}\" ", request.Inputs["Variable name"].AsString(), request.Inputs["Variable value"].AsString());
            IRunspaceManager      runspaceManager = PSRunspaceManger.CreateClient();
            RemoteOperationResult result          = runspaceManager.ExecuteCommand(request.Inputs["Session name"].AsString().ToUpper(), command);

            if (!result.Success)
            {
                throw new Exception(result.Message);
            }

            response.Publish("Session name", request.Inputs["Session Name"].AsString().ToUpper());
            response.Publish("Variable value", result.Message);
        }
Пример #5
0
        public RemoteOperationResult OpenRunspace(PSRunspaceCreationData createOptions)
        {
            RemoteOperationResult result = new RemoteOperationResult();

            if (Runspaces.ContainsKey(createOptions.Name.ToUpper()))
            {
                return new RemoteOperationResult()
                       {
                           Message = "Runspace already existed.", Success = true
                       }
            }
            ;

            try
            {
                WSManConnectionInfo connectioInfo = new WSManConnectionInfo(createOptions.UseSsl, createOptions.Hostname, createOptions.Port, "/wsman", "http://schemas.microsoft.com/powershell/Microsoft.PowerShell", createOptions.Credentials);

                connectioInfo.NoMachineProfile        = !createOptions.LoadMachineProfile;
                connectioInfo.AuthenticationMechanism = AuthenticationMechanism.Negotiate;

                Runspace runspace = RunspaceFactory.CreateRunspace(connectioInfo);
                runspace.Open();
                Runspaces.Add(createOptions.Name.ToUpper(), runspace);
                return(new RemoteOperationResult()
                {
                    Message = "Runspace created.", Success = true
                });
            }
            catch (Exception ex)
            {
                return(new RemoteOperationResult()
                {
                    Message = string.Format("Runspace creation failed: {0}", ex.Message), Success = false
                });
            }
        }