Example: The following demonstrates how to list all of the fields of a template excluding the Standard Template fields.
# Create a list of field names on the Standard Template. This will help us filter out extraneous fields.$standardTemplate = Get-Item -Path "master:" -ID "{1930BBEB-7805-471A-A3BE-4858AC7CF696}"$standardTemplateTemplateItem = [Sitecore.Data.Items.TemplateItem]$standardTemplate$standardFields = $standardTemplateTemplateItem.OwnFields + $standardTemplateTemplateItem.Fields | Select-Object -ExpandProperty key -Unique​$itemTemplate = Get-Item -Path "master:" -ID "{76036F5E-CBCE-46D1-AF0A-4143F9B557AA}"$itemTemplateTemplateItem = [Sitecore.Data.Items.TemplateItem]$itemTemplate$itemTemplateFields = $itemTemplateTemplateItem.OwnFields + $itemTemplateTemplateItem.Fields | Select-Object -ExpandProperty key -Unique​$filterFields = $itemTemplateFields | Where-Object { $standardFields -notcontains $_ } | Sort-Object
Example: The following demonstrates the use of the HtmlAgilityPack for parsing html.
$html = "<ul><li>foo</li><li>bar</li></ul>"$htmlDocument = New-Object -TypeName HtmlAgilityPack.HtmlDocument$htmlDocument.LoadHtml($html)foreach($x in $htmlDocument.DocumentNode.SelectNodes("//li")) {$x.InnerText;}
Example: The following demonstrates how to update text in the document and exclude certain nodes.
$html = @"<div class="kitchen"><div class="kitchen"><blockquote>kitchen<br /><span class="kitchen">kitchen</span></blockquote><a><img title="kitchen" src="https://kitchen-sink.local" /></a></div></div>"@​$htmlDocument = New-Object -TypeName HtmlAgilityPack.HtmlDocument$htmlDocument.LoadHtml($html)foreach($x in $htmlDocument.DocumentNode.Descendants()) {if($x.Name -ne "img" -and ![string]::IsNullOrEmpty($x.Text)) {$x.Text = $x.Text.Replace("kitchen", "sink")}}​$htmlDocument.DocumentNode.OuterHtml
Example: The following demonstrates how to remove empty paragraph tags in an html field.
​Sitecore Stack Exchanage​
Example: The following prints the workflow history of the home item.
$item = Get-Item -Path "master:" -Id "{110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9}"​$db = Get-Database -Name "master"$workflowProvider = $db.WorkflowProvider​foreach($version in $item.Versions.GetVersions()) {$workflowEvents = $workflowProvider.HistoryStore.GetHistory($version)foreach($workflowEvent in $workflowEvents) {"[$($workflowEvent.Date)] ($($workflowEvent.User)) $(($workflowEvent.Text -replace '(\r|\n)',''))"}}
Example: The following restores items in the media library that were removed yesterday. Credit @technomaz.
Write-Host "Restoring items recycled after $($archivedDate.ToShortDateString())"​foreach($archive in Get-Archive -Name "recyclebin") {Write-Host " - Found $($archive.GetEntryCount()) entries"$entries = $archive.GetEntries(0, $archive.GetEntryCount())foreach($entry in $entries) {if($entry.ArchiveLocalDate -ge $archivedDate) {Write-Host "Restoring item: $($entry.OriginalLocation) {$($entry.ArchivalId)}on date $($entry.ArchiveLocalDate)"$archive.RestoreItem($entry.ArchivalId)} else {Write-Host "Skipping $($entry.OriginalLocation) on date $($entry.ArchiveLocalDate)"}}}
Example: The following logs messages to the browser console and then alerts the user with a message.
1..5 | ForEach-Object {Start-Sleep -Seconds 1Invoke-JavaScript -Script "console.log('Hello World! Call #$($_) from PowerShell...');"}​Invoke-JavaScript -Script "alert('hello from powershell');"
Example: Remote Package Installation​
Import-Module -Name SPE -Force​$packageName = "$($SitecorePackageFolder)\[PACKAGE].zip"​$session = New-ScriptSession -Username "admin" -Password "b" -ConnectionUri "https://remotesitecore"Test-RemoteConnection -Session $session -Quiet$jobId = Invoke-RemoteScript -Session $session -ScriptBlock {[Sitecore.Configuration.Settings+Indexing]::Enabled = $falseGet-SearchIndex | ForEach-Object { Stop-SearchIndex -Name $_.Name }Import-Package -Path "$($SitecorePackageFolder)\$($using:packageName)" -InstallMode Merge -MergeMode Merge[Sitecore.Configuration.Settings+Indexing]::Enabled = $true} -AsJobWait-RemoteScriptSession -Session $session -Id $jobId -Delay 5 -VerboseStop-ScriptSession -Session $session
Not seeing what you are looking for? You can always check out some Github Gists that Adam and Michael have shared or the Sitecore Stack Exchange.