我需要用具有相同名称的优化图像替换Sitecore媒体库中的加载(2000多个)图像。我需要保留原始的GUIDS,以便仍链接所有图像。

所以我基本上需要替换图像Blob数据和大小数据。我已经编写了一个powershell脚本来执行此操作,但是我发现它始终可以处理100个项目。我看不到任何原因,这可能只是我的脚本很垃圾,因为我以前没有使用过Powershell。

$CurrentImages = Get-Item  -Path master: -Query '/sitecore/media library/Images/Products//*[@@TemplateName="Jpeg"]';


$NewImages = Get-Item  -Path master: -Query '/sitecore/media library/NewImages//*[@@TemplateName="Jpeg"]';

Write-Host $NewImages.Count;


$CurrentImages|foreach{ $Current = $_;  $NewImages|foreach{ $New = $_; if($New.DisplayName -eq $Current.DisplayName){ Write-Host $Current.DisplayName; $Current.Blob = $New.Blob; $Current.Size = $New.Size; $New | Remove-Item}}};

我正在使用sitecore powershell扩展是否也有帮助

最佳答案

该限制实际上是由CMS在Sitecore.config中强加给查询机制的。您可以找到以下行,并将其更改为上限:
<setting name="Query.MaxItems" value="100" />
但是,我建议在进行较大搜索的情况下,您可能希望使用利用Sitecore内容搜索基础结构的Find-Item cmdlet。

您可以找到更多不同的策略来定位the Gist I've put together some time ago with performance analysis中的内容。

但是,如果使用Find-Item,则需要将搜索结果通过管道传输到Initialize-Item中,以将“搜索结果”项转换为完整的网站核心项。

编辑:在Slack channel 上学到的(感谢Kamruz Jaman!)
此限制在Sitecore 8.1中的App_Config\Include\Sitecore.ExperienceExplorer.config中进一步增加到260,但是显然在您的情况下,第一个限制仍然如此。

<setting name="Query.MaxItems">
    <patch:attribute name="value">260</patch:attribute>
</setting>

关于powershell - Sitecore Powershell 100件限制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36313098/

10-15 20:12