Commandes Sitecore PowerShell – Migration de contenu cloud XM / Blogs / Perficient

Dans cet article, j’ai répertorié les commandes PowerShell Sitecore PowerShell les plus couramment utilisées pour la migration de contenu. Ce blog continue à partir de mon article précédent: Migration du contenu du cloud XM Sitecore XM: plan et stratégie.
Au cours de la migration, nous avons créé plusieurs scripts PowerShell pour extraire les données de la base de données héritée vers CSVS. Nous avons ensuite utilisé ces CSV pour importer du contenu dans des instances de cloud XM. Basé sur ces scriptsJ’ai organisé les commandes en deux groupes: Travailler avec des articles Sitecore et Travailler avec les rendus Sitecore. Ces commandes visent à aider les développeurs à gérer Sitecore similaire aux migrations de cloud XM.
Travailler avec des articles Sitecore
Créer un nouvel élément à l’aide de l’ID de modèle
$item = New-Item -Path $path -Name $itemName -ItemType $itemTemplateId -Language "en"
Parfois, vous devrez peut-être créer un élément avec le même identifiant que dans le système hérité pour éviter de nombreuses reconfigurations. Surtout si ces éléments sont utilisés comme source de données. Dans ce une utilisation cas, nous pourrions utiliser CreateItem depuis Sitecore.Data.Managers.itemManager. Cette méthode prend le nom de l’élément, l’élément parent, l’identifiant de modèle et l’ID d’élément. L’ID $ passé sera l’ID de l’article Sitecore nouvellement créé.
$item = [Sitecore.Data.Managers.ItemManager]::CreateItem($name, $parentItem, $templateItem.ID, $id)
De plus, il y a un Force Param pris en charge par le ‘Nouvel article‘ fonction
New-Item -Path $path -Name $name -ItemType "Blog Page" -ForceId "3904b0bf-b10b-4fbb-9ced-3de87dfa3d48"
Créer un nouvel élément à l’aide du modèle de branche
$item = [Sitecore.Data.Managers.ItemManager]::AddFromTemplate($itemName, $branchTemplateId, $parentItem)
Vérifier si le chemin existe dans l’arbre de contenu
Dans les cas d’utilisation, nous devons vérifier si le chemin existe avant de créer un élément sur ce chemin.
$pathExists = Test-Path -Path $path if($pathExists) { //logic }
Copie des articles
Copy-Item -Path $sourcePath -Destination $targetPath
Travailler avec les rendus Sitecore
Obtenez tous les rendus pour un article
Ce script a été utilisé pour analyser les rendus hérités d’un élément, les cartographier avec de nouveaux rendus (composants) de cloud XM et des champs de carte.
$item = Get-Item -Path $path -Version "latest" $resultObj = @() $defaultLayout = Get-LayoutDevice "Default" Get-Rendering -Item $item -Device $defaultLayout -FinalLayout | ForEach { $renderingItem = Get-Item -Path master: -ID $_.ItemID $Obj = @{ RenderingName = $renderingItem.Name RenderingId = $_.ItemID DataSource = $_.Datasource Placeholder = $_.Placeholder PageItem = $_.OwnerItemID } $resultObj += New-Object psobject -Property $Obj } $resultObj | Format-Table RenderingName, RenderingId, DataSource, Placeholder, PageItem
Créer et définir le rendu pour un élément
Lors de l’importation de données de CSV, nous devons souvent créer et définir une source de données pour rendre un élément. Pour ce cas d’utilisation, j’ai créé une fonction qui prend l’ID de rendu, l’espace réservé pour ajouter le rendu et l’ID de source de données.
function CreateAndSetRendering{ param([String]$id,[String]$placeholder,[String]$dsid ) $renderingId = [Sitecore.Data.ID]::Parse($id) $rendering = get-item -path master: -id $renderingId $renderinginstance = $rendering | new-rendering -placeholder $placeholder if($dsid -ne "") { $datasourceId = [Sitecore.Data.ID]::Parse($dsid) $renderinginstance.datasource = $datasourceId } add-rendering -item $item -placeholder $placeholder -instance $renderinginstance -finallayout $item.editing.beginedit() $item.editing.endedit() | out-null }
Récupérer le rendu et retirer de la présentation
Ot
$defaultLayout = Get-LayoutDevice "Default" $rendering = Get-Rendering -Item $item -Device $defaultLayout -FinalLayout | Where-Object { $_.ItemID -eq "{3904b0bf-b10b-4fbb-9ced-3de87dfa3d48}"} Remove-Rendering -Item $item -Instance $rendering -Device $defaultLayout -FinalLayout
Obtenir une valeur de paramètre de rendu spécifique
$ Paraname est le nom du paramètre de rendu, par exemple, «styles».
$rendering = Get-Item -Path master: -Id "{3904b0bf-b10b-4fbb-9ced-3de87dfa3d48}" $renderingItem = Get-Rendering -Item $item -Device $defaultLayout -Rendering $rendering -FinalLayout $parameterValue = Get-RenderingParameter -Rendering $renderingItem -Name $paramName
Mise à jour de la valeur du paramètre de rendu
S’il y a plus d’un rendu Du même type, le RenderingItem RenderingItem rendu sera un tableau afin que vous puissiez accéder aux premiers paramètres de rendu $ RenderingItem[0].Parameters: cela renverra tous les paramètres, puis vous devrez vérifier un paramètre spécifique.
$rendering = Get-Item -Path master: -Id "{3904b0bf-b10b-4fbb-9ced-3de87dfa3d48}" $renderingItem = Get-Rendering -Item $item -Device $defaultLayout -Rendering $rendering -FinalLayout $renedringParams = $renderingItem[0].Parameters $styles = "Styles" if ($renedringParams.Contains($styles)) { $renedringParams = @{ Styles = "%7B3904b0bf-b10b-4fbb-9ced-3de87dfa3d48%7D" } } Set-RenderingParameter -Instance $renderingItem[0] -Parameter $renedringParams | Out-Null Set-Rendering -Item $item -Instance $renderingItem[0] -FinalLayout
Note: Nous devons intégrer l’ID Sitecore pour votre style requis entre% 7b et% 7D. Pour plusieurs valeurs, le séparateur est% 7D% 7C% 7B. C’est ainsi que Sitecore stocke les valeurs de paramètres.
Vous pouvez stocker plusieurs valeurs comme ceci: Styles = “% 7B3904B0BF-B10B-4FBB-9CE-3DE87DFA3D48% 7D% 7C% 7B936219E-A03B-49C5-8EFF-8B877B5C1319% 7D »
Conclusion
Il s’agit donc de la liste consolidée des commandes PowerShell Sitecore pour la migration du contenu. Les ID utilisés dans les extraits ci-dessus n’étaient pas des ID d’élément Sitecore valides. Remplacez-les par des ID d’élément Sitecore valides en fonction des éléments Sitecore utilisés dans votre projet.
Continuez à apprendre!
Source link