[英]Running a Sitecore Powershell script from code
我已经安装了流行的Powershell控制台 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 Script
项目上,则传入一个包含您希望运行的SPE命令和脚本的字符串。
您可以在此博客文章中阅读有关在自己的代码中使用PowerShell控制台进行Sitecore的更多信息
更新:
要创建“脚本项”,请使用以下模板创建项:
/sitecore/templates/Modules/PowerShell Console/PowerShell Script
这将为您提供Script body
,您可以在其中放置代码。 您可以在/sitecore/system/Modules/PowerShell/Script Library
下的模块脚本库中找到默认SPE脚本的示例。
更新2:
要从脚本中获取返回值,请调用以对方法的stringOutput
参数传递false
:
List<object> results;
results = scriptSession.ExecuteScriptPart(script, false);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.