我已经安装了流行的
Powershell Console Sitecore插件,到目前为止我很喜欢它.
我希望能够以编程方式在C#中调用特定脚本(因为用户输入的结果),但我找不到任何有效的资源指向我正确的方向.
有没有办法实现这个目标?经典Powershell脚本的规则是否适用于Sitecore版本?
解决方法
您可以使用以下代码直接从您自己的代码中调用任何PowerShell脚本
using Cognifide.PowerShell.Core.Host; using Sitecore.Data.Items; namespace MyProject { public class TestSPE { public void Invoke() { using (ScriptSession scriptSession = ScriptSessionManager.NewSession("Default",true)) { Item speScriptItem = Sitecore.Context.Database.GetItem("/path-or-id/to-spe-item"); string script = speScriptItem["Script"]; if (!string.IsNullOrEmpty(script)) scriptSession.ExecuteScriptPart(script); } } } }
请务必在项目中添加对Cognifide.PowerShell.dll的引用.
如果您的脚本未存储在Sitecore中的PowerShell脚本项目上,则传入一个包含您希望运行的SPE命令和脚本的字符串.
您可以在此博客文章中阅读有关Using PowerShell Console for Sitecore in Your Own Code的更多信息
更新:
要创建“脚本项”,请使用以下模板创建项:
/sitecore/templates/Modules/PowerShell Console/PowerShell Script
这将为您提供脚本正文,您可以在其中放置代码.您可以在/ sitecore / system / Modules / PowerShell / Script Library下的模块脚本库中找到默认SPE脚本的示例.
更新2:
要从脚本中获取返回值,请调用以对方法的stringOutput参数传递false:
List<object> results; results = scriptSession.ExecuteScriptPart(script,false);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。