Publishing.psm1
#Requires -version 3.0 Set-StrictMode -Version Latest <# ************************************************** * Private members ************************************************** #> <# ************************************************** * Public members ************************************************** #> function Publish-TridionItem { <# .Synopsis Publishes an item to the specified target. .Inputs None. .Outputs None. .Link Get the latest version of this script from the following URL: https://github.com/pkjaer/tridion-powershell-modules .Example Publish-TridionItem -Id 'tcm:1-59' -Target $publicationTarget Publishes the item with ID 'tcm:1-59' to the Publication Target stored in variable $publicationTarget. .Example Publish-TridionItem -Id 'tcm:1-59' -TargetId 'tcm:0-1-65537' Publishes the item with ID 'tcm:1-59' to Publication Target with ID 'tcm:0-1-65537' with normal priority. .Example Publish-TridionItem -Id 'tcm:1-59' -TargetId 'tcm:0-1-65537' -Priority High Publishes the item with ID 'tcm:1-59' to Publication Target with ID 'tcm:0-1-65537' with high priority. #> [CmdletBinding()] Param ( # The TCM URI of the item to publish. [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, ParameterSetName='ById', Position=0)] [ValidateNotNullOrEmpty()] [string]$Id, # The TCM URI of the Publication Target to publish to [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, ParameterSetName='ById', Position=1)] [ValidateNotNullOrEmpty()] [string]$TargetId, # The item to publish. [Parameter(Mandatory=$true, ValueFromPipeline=$true, ParameterSetName='WithObject', Position=0)] [ValidateNotNullOrEmpty()] [string]$Item, # The Publication Target to publish to [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, ParameterSetName='WithObject', Position=1)] [ValidateNotNullOrEmpty()] [string]$Target, # The priority you wish to publish it with (Low, Medium, High) [Parameter(ValueFromPipelineByPropertyName=$true, Position=2)] [ValidateSet('Low', 'Normal', 'High')] [string]$Priority = 'Normal' ) Begin { $client = Get-TridionCoreServiceClient -Verbose:($PSBoundParameters['Verbose'] -eq $true); } Process { if ($client -eq $null) { return; } $publishInstruction = New-Object Tridion.ContentManager.CoreService.Client.PublishInstructionData; $publishInstruction.RenderInstruction = New-Object Tridion.ContentManager.CoreService.Client.RenderInstructionData; $publishInstruction.ResolveInstruction = New-Object Tridion.ContentManager.CoreService.Client.ResolveInstructionData ; $readOptions = New-Object Tridion.ContentManager.CoreService.Client.ReadOptions; switch($PsCmdlet.ParameterSetName) { 'ById' { return $client.Publish($Id, $publishInstruction, $TargetId, $Priority, $readOptions); } 'WithObject' { return $client.Publish($Item.Id, $publishInstruction, $Target.Id, $Priority, $readOptions); } } } End { Close-TridionCoreServiceClient $client; } } function Unpublish-TridionItem { <# .Synopsis Unpublishes an item from the specified target. .Inputs None. .Outputs None. .Link Get the latest version of this script from the following URL: https://github.com/pkjaer/tridion-powershell-modules .Example Unpublish-TridionItem -Id 'tcm:1-59' -Target $publicationTarget Unpublishes the item with ID 'tcm:1-59' from the Publication Target stored in variable $publicationTarget. .Example Unpublish-TridionItem -Id 'tcm:1-59' -TargetId 'tcm:0-1-65537' Unpublishes the item with ID 'tcm:1-59' from Publication Target with ID 'tcm:0-1-65537' with normal priority. .Example Unpublish-TridionItem -Id 'tcm:1-59' -TargetId 'tcm:0-1-65537' -Priority High Unpublishes the item with ID 'tcm:1-59' from Publication Target with ID 'tcm:0-1-65537' with high priority. #> [CmdletBinding()] Param ( # The TCM URI of the item to unpublish. [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, ParameterSetName='ById', Position=0)] [ValidateNotNullOrEmpty()] [string]$Id, # The TCM URI of the Publication Target to unpublish from [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, ParameterSetName='ById', Position=1)] [ValidateNotNullOrEmpty()] [string]$TargetId, # The item to unpublish. [Parameter(Mandatory=$true, ValueFromPipeline=$true, ParameterSetName='WithObject', Position=0)] [ValidateNotNullOrEmpty()] [string]$Item, # The Publication Target to unpublish from [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, ParameterSetName='WithObject', Position=1)] [ValidateNotNullOrEmpty()] [string]$Target, # The priority you wish to unpublish it with (Low, Medium, High) [Parameter(ValueFromPipelineByPropertyName=$true, Position=2)] [ValidateSet('Low', 'Normal', 'High')] [string]$Priority = 'Normal' ) Begin { $client = Get-TridionCoreServiceClient -Verbose:($PSBoundParameters['Verbose'] -eq $true); } Process { if ($client -eq $null) { return; } $unpublishInstruction = New-Object Tridion.ContentManager.CoreService.Client.UnpublishInstructionData; $unpublishInstruction.ResolveInstruction = New-Object Tridion.ContentManager.CoreService.Client.ResolveInstructionData; $readOptions = New-Object Tridion.ContentManager.CoreService.Client.ReadOptions; switch($PsCmdlet.ParameterSetName) { 'ById' { return $client.Unpublish($Id, $unpublishInstruction, $TargetId, $Priority, $readOptions); } 'WithObject' { return $client.Unpublish($Item.Id, $unpublishInstruction, $Target.Id, $Priority, $readOptions); } } } End { Close-TridionCoreServiceClient $client; } } function Get-TridionPublishTransaction { <# .Synopsis Gets a Publish Transaction by ID or a list of them based on a filter. .Description Gets a specific Publish Transaction (entry in the Publishing Queue) by its ID, or a list of all transactions that match the provided set of criteria. .Inputs [string] Id: the Publish Transaction with the given ID. OR [string] PublishState: the Publish state you want to filter on (Rendering, Success, Failed, etc.) [DateTime] StartDate: Only show Publish Transactions created after this date. [DateTime] EndDate: Only show Publish Transactions that occurred before this date. [int] PublicationID: Only show Publish Transactions for this Publication. [string] Priority: Only show Pubish Transactions with this Priority (Low, Normal, High) [int] Target: Only show Publish Transactions for this Publication Target [string] UserName: Only show Publish Transactions initiated by this user (including domain name) .Outputs Returns a list of Publish Transactions matching the given criteria .Link Get the latest version of this script from the following URL: https://github.com/pkjaer/tridion-powershell-modules .Example Get-TridionPublishTransaction Returns all Publish Transactions currently in the Publish Queue .Example Get-TridionPublishTransaction -Id 'tcm:0-2382-66560' Returns the Publish Transaction with the ID 'tcm:0-2382-66560'. .Example Get-TridionPublishTransaction -EndDate 3-23-2016 Returns all Publish Transactions created before March 23, 2016. .Example Get-TridionPublishTransaction -UserName domain\name -PublishState Success Returns all Publish Transactions created by user 'domain\name' that were published successfully. .Example Get-TridionPublishTransaction -Priority Low | Remove-TridionPublishTransactions Removes all Publish Transactions with a low priority. #> [CmdletBinding(DefaultParameterSetName='ByFilter')] Param ( [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, ParameterSetName='ById')] [string]$Id, [Parameter(ValueFromPipelineByPropertyName=$true, ParameterSetName='ByFilter')] [ValidateSet('CommittingDeployment', 'Deploying', 'Failed', 'InProgress', 'PreCommittingDeployment', 'PreparingDeployment', 'ReadyForTransport', 'Rendering', 'Resolving', 'ScheduledForDeployment', 'ScheduledForPublish', 'Success', 'Throttled', 'Transporting', 'UndoFailed', 'Undoing', 'Undone')] [string]$PublishState, [Parameter(ValueFromPipelineByPropertyName=$true, ParameterSetName='ByFilter')] [DateTime]$EndDate, [Parameter(ValueFromPipelineByPropertyName=$true, ParameterSetName='ByFilter')] [DateTime]$StartDate, [Parameter(ValueFromPipelineByPropertyName=$true, ParameterSetName='ByFilter')] [int]$PublicationId, [Parameter(ValueFromPipelineByPropertyName=$true, ParameterSetName='ByFilter')] [ValidateSet('Low', 'Normal', 'High')] [string]$Priority, [Parameter(ValueFromPipelineByPropertyName=$true, ParameterSetName='ByFilter')] [int]$Target, [Parameter(ValueFromPipelineByPropertyName=$true, ParameterSetName='ByFilter')] [string]$UserName ) Begin { $client = Get-TridionCoreServiceClient -Verbose:($PSBoundParameters['Verbose'] -eq $true); } Process { if ($client -ne $null) { switch($PsCmdlet.ParameterSetName) { 'ById' { return Get-TridionItem $Id; } 'ByFilter' { $filter = New-Object Tridion.ContentManager.CoreService.Client.PublishTransactionsFilterData; if ($PublishState) { Write-Verbose "Adding filter for PublishTransactionState: $PublishState"; $filter.PublishTransactionState = $PublishState; } if ($EndDate) { Write-Verbose "Adding filter for EndDate: $EndDate"; $filter.EndDate = $EndDate.ToUniversalTime(); } if ($StartDate) { Write-Verbose "Adding filter for StartDate: $StartDate"; $filter.StartDate = $StartDate.ToUniversalTime(); } if ($PublicationId) { Write-Verbose "Adding filter to only show PublishTransactions for publication with ID: $PublicationId"; $repo = New-Object Tridion.ContentManager.CoreService.Client.LinkToRepositoryData; $repo.IdRef = "tcm:0-$PublicationId-1"; $filter.ForRepository = $repo; } if ($Priority) { Write-Verbose "Adding filter for priority: $Priority"; $filter.Priority = $Priority; } if ($Target) { Write-Verbose "Adding filter to only show PublishTransactions for a Target with ID: $Target"; $ptd = New-Object Tridion.ContentManager.CoreService.Client.LinkToPublicationTargetData; $ptd.IdRef = "tcm:0-$Target-65537"; $filter.PublicationTarget = $ptd; } if ($UserName) { Write-Verbose "Adding filter to only show Publish Transctions created by a user with name: $UserName"; $uid = Get-TridionUser -Title $UserName | Select-Object -ExpandProperty 'Id'; $f = New-Object Tridion.ContentManager.CoreService.Client.LinkToUserData; $f.IdRef = $uid; $filter.PublishedBy = $f; } return $client.GetSystemWideList($filter); } } } } End { Close-TridionCoreServiceClient $client; } } function Remove-TridionPublishTransaction { <# .Synopsis Deletes a given Publish Transaction from the Publish Queue. .Description Deletes a given Publish Transaction from the Publish Queue. .Inputs [string] Id: The ID of the Publish Transaction. OR [Tridion.ContentManager.CoreService.Client.PublishTransactionData] InputObject: the Publish Transaction to delete. .Outputs None. .Link Get the latest version of this script from the following URL: https://github.com/pkjaer/tridion-powershell-modules .Example Remove-TridionPublishTransactions tcm:0-4212900-66560 Remove a Publish Transaction with this uri from the Publish Queue .Example Get-PublishQueueInfo -Priority Low -NoFormatting | select -ExpandProperty Id | Remove-TridionPublishTransactions Remove all Publish Transactions with a low priority #> [CmdletBinding(DefaultParameterSetName='ById')] Param ( [Parameter(Position=0, Mandatory=$true, ValueFromPipelineByPropertyName=$true, ValueFromPipeline=$true, ParameterSetName='ById')] [string]$Id, [Parameter(Position=0, Mandatory=$true, ValueFromPipelineByPropertyName=$true, ValueFromPipeline=$true, ParameterSetName='WithObject')] [Tridion.ContentManager.CoreService.Client.PublishTransactionData]$Item ) Begin { $client = Get-TridionCoreServiceClient -Verbose:($PSBoundParameters['Verbose'] -eq $true); } Process { if ($client -ne $null) { switch($PsCmdlet.ParameterSetName) { 'ById' { $client.Delete($Id) | Out-Null; } 'WithObject' { $client.Delete($Item.Id) | Out-Null; } } } } End { Close-TridionCoreServiceClient $client; } } <# ************************************************** * Export statements ************************************************** #> Export-ModuleMember Publish-Tridion*, Unpublish-Tridion*, Get-Tridion*, Remove-Tridion* -Alias * |