public void ProcessRequest(HttpContext context) { string userName = HttpContext.Current.Request.Params.Get("user"); string password = HttpContext.Current.Request.Params.Get("password"); string scriptParam = HttpContext.Current.Request.Params.Get("script"); string scriptDbParam = HttpContext.Current.Request.Params.Get("scriptDb"); string itemParam = HttpContext.Current.Request.Params.Get("item"); string itemDbParam = HttpContext.Current.Request.Params.Get("itemDb"); bool authenticated = !string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(password) && AuthenticationManager.Login(userName, password, false); Database scriptDb = !authenticated || string.IsNullOrEmpty(scriptDbParam) ? Sitecore.Context.Database : Database.GetDatabase(scriptDbParam); Database itemDb = !authenticated || string.IsNullOrEmpty(itemDbParam) ? Sitecore.Context.Database : Database.GetDatabase(itemDbParam); Item scriptItem = scriptDb.GetItem(scriptParam); if (scriptItem == null) { scriptItem = scriptDb.GetItem("/sitecore/system/Modules/PowerShell/Script Library/" + scriptParam); } if (scriptItem == null || scriptItem.Fields[ScriptItemFieldNames.Script] == null) { return; } using (var session = new ScriptSession(ApplicationNames.Default)) { String script = scriptItem.Fields[ScriptItemFieldNames.Script].Value; if (!string.IsNullOrEmpty(itemParam)) { Item item = itemDb.GetItem(itemParam); if (item != null) session.SetItemLocationContext(item); } context.Response.ContentType = "text/plain"; session.ExecuteScriptPart(script, true); context.Response.Write(session.Output.ToString()); if (session.Output.HasErrors) { context.Response.StatusCode = 424; context.Response.StatusDescription = "Method Failure"; } } }
public void OnEvent(object sender, EventArgs args) { var eventArgs = args as SitecoreEventArgs; if (eventArgs == null) { return; } Item item = eventArgs.Parameters[0] as Item; string eventName = eventArgs.EventName.Replace(':', '/'); Database database = item != null ? item.Database ?? Context.ContentDatabase : Context.ContentDatabase; Item libraryItem = database.GetItem(EventHandlerLibraryPath + eventName); if (libraryItem == null) { return; } using (var session = new ScriptSession(ApplicationNames.Default)) { foreach (Item scriptItem in libraryItem.Children) { if (item != null) { session.SetItemLocationContext(item); } session.SetVariable("eventArgs", eventArgs); string script = scriptItem["Script"]; if (!String.IsNullOrEmpty(script)) { session.ExecuteScriptPart(script); } } } }
protected virtual void ClientExecute(ClientPipelineArgs args) { Settings = ApplicationSettings.GetInstance(ApplicationNames.IseConsole); using(var scriptSession = new ScriptSession(Settings.ApplicationName)){ EnterScriptInfo.Visible = false; try { scriptSession.ExecuteScriptPart(Settings.Prescript); scriptSession.SetItemLocationContext(DataContext.CurrentItem); scriptSession.ExecuteScriptPart(Editor.Value); if (scriptSession.Output != null) { Context.ClientPage.ClientResponse.SetInnerHtml("Result", scriptSession.Output.ToHtml()); } } catch (Exception exc) { Context.ClientPage.ClientResponse.SetInnerHtml("Result", string.Format("<pre style='background:red;'>{0}</pre>", scriptSession.GetExceptionString(exc))); } } if (Settings.SaveLastScript) { Settings.Load(); Settings.LastScript = Editor.Value; Settings.Save(); } }