powershell 脚本删除 sitecore 中法语版本的所有内容项
powershell script to remove all content items for french version in 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
}
}
我将从以下内容开始:
$path = "master:\content"
@(Get-Item -Path $path -Language "fr") + @(Get-ChildItem -Path $path -Language "fr" -Recurse)
一旦您确定这是您要删除的项目列表,您可以将这些结果通过管道传输到 Remove-ItemLanguage
。
$path = "master:\content"
@(Get-Item -Path $path -Language "fr") + @(Get-ChildItem -Path $path -Language "fr" -Recurse) | Remove-ItemLanguage -Language "fr"
查看我们的 Gitbook 了解更多详情here。关于使用项目的部分涵盖了按版本和语言获取。
米罗,
您需要知道的一件事是 Remove-Item
总是将项目作为一个整体删除。即使您通过管道传输特定于语言的版本,它也不会仅删除语言。这是因为 sitecore API 总是 returns 一个特定语言的项目并且 Remove-Item
无法忽略其意图。
您需要为此目的使用的是 Remove-ItemLanguage
commandlet。
例如在下面的示例中,我在我的内容中创建了一个 "Test" 项目,然后为每个项目添加了波兰语版本,并在下一步中删除了波兰语版本。
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
您的脚本可以像下面这样简单:
$path = "master:\content"
@(Get-Item $path) + (Get-ChildItem $path -Recurse) | Remove-ItemLanguage -Language "fr-CA"
我想使用此脚本删除法语版的所有内容项,并将英语版保留在 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
}
}
我将从以下内容开始:
$path = "master:\content"
@(Get-Item -Path $path -Language "fr") + @(Get-ChildItem -Path $path -Language "fr" -Recurse)
一旦您确定这是您要删除的项目列表,您可以将这些结果通过管道传输到 Remove-ItemLanguage
。
$path = "master:\content"
@(Get-Item -Path $path -Language "fr") + @(Get-ChildItem -Path $path -Language "fr" -Recurse) | Remove-ItemLanguage -Language "fr"
查看我们的 Gitbook 了解更多详情here。关于使用项目的部分涵盖了按版本和语言获取。
米罗,
您需要知道的一件事是 Remove-Item
总是将项目作为一个整体删除。即使您通过管道传输特定于语言的版本,它也不会仅删除语言。这是因为 sitecore API 总是 returns 一个特定语言的项目并且 Remove-Item
无法忽略其意图。
您需要为此目的使用的是 Remove-ItemLanguage
commandlet。
例如在下面的示例中,我在我的内容中创建了一个 "Test" 项目,然后为每个项目添加了波兰语版本,并在下一步中删除了波兰语版本。
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
您的脚本可以像下面这样简单:
$path = "master:\content"
@(Get-Item $path) + (Get-ChildItem $path -Recurse) | Remove-ItemLanguage -Language "fr-CA"