Пример #1
0
        private void LoadItem(string db, string id)
        {
            Assert.ArgumentNotNull(id, "id");
            Assert.ArgumentNotNull(db, "db");
            var scriptItem = Factory.GetDatabase(db).GetItem(id);

            if (!scriptItem.IsPowerShellScript())
            {
                SessionElevationErrors.OperationFailedWrongDataTemplate();
                return;
            }

            if (scriptItem[Templates.Script.Fields.ScriptBody] != null)
            {
                Editor.Value = scriptItem[Templates.Script.Fields.ScriptBody];
                SheerResponse.Eval("spe.updateEditor();");
                ScriptItemId = scriptItem.ID.ToString();
                ScriptItemDb = scriptItem.Database.Name;
                MruUpdate(scriptItem);
                UpdateRibbon();
            }
            else
            {
                SheerResponse.Alert(Texts.PowerShellIse_LoadItem_The_item_is_not_a_script_, true);
            }
        }
Пример #2
0
        public void Process(WorkflowPipelineArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            var processorItem = args.ProcessorItem;

            if (processorItem == null)
            {
                return;
            }
            var actionItem = processorItem.InnerItem;

            var dataItem = args.DataItem;

            if (string.IsNullOrEmpty(actionItem[Templates.ScriptWorkflowAction.Fields.ScriptBody]))
            {
                return;
            }

            var scriptItem = actionItem.Database.GetItem(new ID(actionItem[Templates.ScriptWorkflowAction.Fields.ScriptBody]));

            if (!scriptItem.IsPowerShellScript())
            {
                Context.ClientPage.ClientResponse.Broadcast(SessionElevationErrors.OperationFailedWrongDataTemplate(), "Shell");
                return;
            }

            if (!RulesUtils.EvaluateRules(actionItem[Templates.ScriptWorkflowAction.Fields.EnableRule], dataItem) ||
                !RulesUtils.EvaluateRules(scriptItem[Templates.Script.Fields.ShowRule], dataItem))
            {
                return;
            }

            var str = new UrlString(UIUtil.GetUri("control:PowerShellRunner"));

            str.Append("id", dataItem.ID.ToString());
            str.Append("db", dataItem.Database.Name);
            str.Append("lang", dataItem.Language.Name);
            str.Append("ver", dataItem.Version.Number.ToString(CultureInfo.InvariantCulture));
            str.Append("scriptId", scriptItem.ID.ToString());
            str.Append("scriptDb", scriptItem.Database.Name);

            if (Context.ClientPage.Application != null)
            {
                Context.ClientPage.ClientResponse.Broadcast(SheerResponse.ShowModalDialog(str.ToString(), "400", "220", "PowerShell Script Results", false), "Shell");
            }
            else
            {
                SheerResponse.ShowModalDialog(str.ToString(), "400", "220");
            }
        }
Пример #3
0
 private bool RequestSessionElevationEx(ClientPipelineArgs args, string appName, string action)
 {
     if (!SessionElevationManager.IsSessionTokenElevated(appName))
     {
         if (args.Parameters.AllKeys.Contains("elevationResult"))
         {
             SessionElevationErrors.OperationRequiresElevation();
             return(false);
         }
         var pipelineArgs = new ClientPipelineArgs();
         pipelineArgs.Parameters["message"] = args.Parameters["message"];
         pipelineArgs.Parameters["app"]     = appName;
         pipelineArgs.Parameters["action"]  = action;
         Context.ClientPage.Start(this, nameof(SessionElevationPipeline), pipelineArgs);
         return(false);
     }
     return(true);
 }
Пример #4
0
        private void ExecuteScriptJob(Item scriptItem, ScriptSession scriptSession, Message message, bool autoDispose)
        {
            if (!scriptItem.IsPowerShellScript())
            {
                SessionElevationErrors.OperationFailedWrongDataTemplate();
                return;
            }

            var script = scriptItem[Templates.Script.Fields.ScriptBody] ?? string.Empty;

            SetVariables(scriptSession, message);
            scriptSession.SetExecutedScript(scriptItem);
            scriptSession.Interactive = true;
            ScriptSessionId           = scriptSession.ID;

            var progressBoxRunner = new ScriptRunner(ExecuteInternal, scriptSession, script, autoDispose);

            Monitor.Start($"SPE - \"{ListViewer?.Data?.Title}\" - \"{scriptItem?.Name}\"", "UI", progressBoxRunner.Run);
            LvProgressOverlay.Visible = false;
            Monitor.SessionID         = scriptSession.ID;
        }
        public void Process(WorkflowPipelineArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            ProcessorItem processorItem = args.ProcessorItem;

            if (processorItem != null)
            {
                Item innerItem = processorItem.InnerItem;
                Item dataItem  = args.DataItem;
                if (!string.IsNullOrEmpty(innerItem[Templates.ScriptWorkflowAction.Fields.ScriptBody]))
                {
                    Item item = innerItem.Database.GetItem(new ID(innerItem[Templates.ScriptWorkflowAction.Fields.ScriptBody]));
                    if (!ItemExtensions.IsPowerShellScript(item))
                    {
                        Context.ClientPage.ClientResponse.Broadcast(SessionElevationErrors.OperationFailedWrongDataTemplate(), "Shell");
                    }
                    else if ((!RulesUtils.EvaluateRules(innerItem[Templates.ScriptWorkflowAction.Fields.EnableRule], dataItem, false) ? false : RulesUtils.EvaluateRules(item[Templates.Script.Fields.ShowRule], dataItem, false)))
                    {
                        UrlString urlString = new UrlString(UIUtil.GetUri("control:PowerShellRunner"));
                        urlString.Append("id", dataItem.ID.ToString());
                        urlString.Append("db", dataItem.Database.Name);
                        urlString.Append("lang", dataItem.Language.Name);
                        int number = dataItem.Version.Number;
                        urlString.Append("ver", number.ToString(CultureInfo.InvariantCulture));
                        urlString.Append("scriptId", item.ID.ToString());
                        urlString.Append("scriptDb", item.Database.Name);
                        if (Context.ClientPage.Application == null)
                        {
                            SheerResponse.ShowModalDialog(urlString.ToString(), "400", "220");
                        }
                        else
                        {
                            Context.ClientPage.ClientResponse.Broadcast(SheerResponse.ShowModalDialog(urlString.ToString(), "400", "220", "PowerShell Script Results", false), "Shell");
                        }
                    }
                }
            }
        }