Mir*_*ypt 5 powershell sitecore
我想使用此脚本删除法语版本的所有内容项目,并将英文版本保留在sitecore中,但想要确保它在排除它之前看起来很好:(
cd 'master:/sitecore/content'
function FilterItemsToProcess($item)
{
Get-Item $item.ProviderPath -Language "fr-CA"
}
$list = [System.Collections.ArrayList]@()
$itemsToProcess = Get-ChildItem -Recurse . | foreach {FilterItemsToProcess($_)}
if($itemsToProcess -ne $null)
{
$itemsToProcess | ForEach-Object {
| remove-item
}
}
Run Code Online (Sandbox Code Playgroud)
Ada*_*icz 10
Miroo,
您需要知道的一件事是Remove-Item始终将整个项目删除.即使您管道特定于语言的版本,它也不会仅删除该语言.这是因为sitecore API始终以特定语言返回项目,并且Remove-Item无法忽略该意图.
您需要用于此目的的是Remove-ItemLanguage命令行开关.
例如,在以下示例中,我在我的内容中创建了一个"测试"项目,然后在每个项目中添加波兰语版本,并在下一步中删除波兰语版本.
New-Item master:\content\ -ItemType "Sample/sample item" -Name test -Language en | Out-Null
foreach ($i in 1..10) {
New-Item master:\content\test\ -ItemType "Sample/sample item" -Name $i -Language en | Out-Null
}
Get-ChildItem master:\content\test\ | Add-ItemLanguage -TargetLanguage pl-pl -IfExist Skip | Out-Null
Get-ChildItem master:\content\test\ | Remove-ItemLanguage -Language pl-pl
Run Code Online (Sandbox Code Playgroud)
您的脚本可以像下面这样简单:
$path = "master:\content"
@(Get-Item $path) + (Get-ChildItem $path -Recurse) | Remove-ItemLanguage -Language "fr-CA"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2743 次 |
| 最近记录: |