我需要用具有相同名称的优化图像替换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/