Back To Home

Name: Ngày 22: PowerShell Extension trong Sitecore

🛠 Ngày 22: PowerShell Extension trong Sitecore (SPE)

Sitecore PowerShell Extensions (SPE) là một module mạnh mẽ cho phép chạy PowerShell trực tiếp trong Sitecore để:

✔ Tự động tạo/thay đổi hàng loạt item
✔ Triển khai template, rendering, Media Item
✔ Xử lý case migration & cleanup
✔ Hỗ trợ DevOps/CI/CD
✔ Quản trị user/role
✔ Sinh report, kiểm tra broken link
✔ Tích hợp Ribbon tùy chỉnh trong Content Editor

SPE là công cụ bắt buộc phải biết khi làm việc chuyên sâu với Sitecore.


⭐ 1. PowerShell Extension là gì?

SPE là module mở rộng cung cấp:

  • PowerShell ISE (trong Sitecore Desktop)

  • PowerShell Toolbox

  • Script Library

  • Integration vào Context Menu, Ribbon

  • Job Runner cho script lâu

  • API PowerShell mạnh mẽ cho Sitecore


⭐ 2. Cài đặt SPE

Thông qua Sitecore Marketplace hoặc Sitecore Install Assistant (SIA):

🟦 Tên module:
Sitecore PowerShell Extensions

Thường cài trên cả CM lẫn CD nếu cần, nhưng CD chỉ cần cài runtime (không cần ISE).


⭐ 3. Môi trường chạy PowerShell trong Sitecore

Truy cập:

  • Desktop → PowerShell ISE

  • Content Editor → PowerShell Toolbox

  • Start Menu: Development Tools → PowerShell ISE

Trong PowerShell ISE, bạn có đầy đủ script editor + autocomplete.


⭐ 4. Cấu trúc SPE Script Library

SPE lưu script giống như item trong Content Tree:

 
/sitecore/system/Modules/PowerShell/Script Library/

Trong đây có:

  • Scripts

  • Tasks

  • Reports

  • Functions

  • Menu Items

  • Content Editor

  • Integration Points

Bạn có thể:

✔ Tạo script mới
✔ Tạo script automation chạy theo menu chuột phải
✔ Gắn script vào Ribbon


⭐ 5. Lệnh PowerShell quan trọng nhất trong Sitecore

🔍 Lấy item

 
$item = Get-Item -Path "master:/sitecore/content/Home"

🔧 Tạo item

 
New-Item -Path "master:/sitecore/content/Home" -Name "Test" -ItemType "Sample/Sample Item"

✏️ Update field

 
$item.Editing.BeginEdit() $item["Title"] = "New Title" $item.Editing.EndEdit()

🔁 Lặp qua nhiều item

 
Get-ChildItem -Path "master:/sitecore/content/Products" | ForEach-Object { Write-Host $_.Name }

🗑 Xóa item

 
Remove-Item -Path "master:/sitecore/content/Home/Test Item"

⭐ 6. Ví dụ thực tế thường dùng

6.1. Tạo hàng loạt item cùng template

 
$template = "Sample/Sample Item" $parent = "master:/sitecore/content/Home" 1..10 | ForEach-Object { New-Item -Path $parent -Name "Item $_" -ItemType $template }

6.2. Copy field từ item này sang item khác theo list

 
$targetFolder = "master:/sitecore/content/Blog" Get-ChildItem $targetFolder | ForEach-Object { $_.Editing.BeginEdit() $_["Author"] = "Admin" $_.Editing.EndEdit() }

6.3. Tìm broken links trong website

 
Get-BrokenLinksReport

SPE có built-in command cho việc này.


6.4. Export item ra JSON / ZIP để deploy môi trường khác

 
Export-Item -Path "master:/sitecore/content/Home" -Destination "c:\backup\home.zip"

6.5. Import item vào CM/CD

 
Import-Item -Path "master:/sitecore/content" -Source "c:\backup\home.zip"

⭐ 7. Tích hợp PowerShell vào Content Editor

Bạn có thể thêm script vào:

✔ Context Menu

✔ Ribbon (Home, Review, Publish...)

✔ Insert Options

✔ Right-click menu

Ví dụ tạo Menu Item:

  • Copy script vào:

 
/sitecore/system/Modules/PowerShell/Script Library/My Tools/Menu Items/
  • Chọn Integration Point → Context Menu

  • Chọn rule hiển thị (ví dụ: chỉ hiện khi chọn Template XYZ)


⭐ 8. Chạy script dài qua Job

Nếu script chạy lâu → SPE tự động chuyển sang Background Job:

 
Start-Job -ScriptBlock { # long task here }

⭐ 9. Best Practices khi dùng SPE

✔ Dùng “WhatIf” trước khi chạy thật

✔ Không chỉnh Production trực tiếp

✔ Backup item trước khi bulk update

✔ Hạn chế dùng ISE trên CD (chỉ CM)

✔ Script phải rõ ràng và có log


⭐ 10. Khi nào SPE đặc biệt hữu ích?

Tình huống SPE có lợi?
Update 1000+ item field ✔✔✔
Clone structure từ môi trường UAT → DEV ✔✔✔
Migrate content giữa project ✔✔✔
Cleanup media, broken link ✔✔
Fix permission ✔✔
Import/export JSON

🎉 Kết luận Ngày 22

Hôm nay bạn đã học:

  • PowerShell Extension là gì

  • Tại sao SPE quan trọng

  • Cấu trúc Script Library

  • Các lệnh PowerShell cho Sitecore

  • Script thực tế dùng trong dự án

  • Tích hợp SPE vào Content Editor

  • Best practices

Donald Trump

Để trở thành người chiến thắng, bạn cần biết khi nào là đủ. Đôi khi trong cuộc sống, bạn phải từ bỏ cuộc chiến và chuyển sang mục tiêu mới mang lại hiệu quả hơn

Related Post