加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 从代码运行Sitecore Powershell脚本

发布时间:2020-12-15 23:35:43 所属栏目:百科 来源:网络整理
导读:我已经安装了流行的 Powershell Console Sitecore插件,到目前为止我很喜欢它. 我希望能够以编程方式在C#中调用特定脚本(因为用户输入的结果),但我找不到任何有效的资源指向我正确的方向. 有没有办法实现这个目标?经典Powershell脚本的规则是否适用于Sitecor
我已经安装了流行的 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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读