ProCrm.Xrm.PowerShell.Deployment.psm1
function New-XrmPublisherAndDefaultSolution() { param ( [string]$PublisherName, [string]$PublisherLogicalName, [string]$PublisherPrefix, [string]$SolutionName, [string]$SolutionLogicalName ) Write-Output "Creating solution and publisher ..." Write-Output "" # CREATE Publisher $publishers = Get-CrmRecords -EntityLogicalName publisher -FilterAttribute uniquename -FilterOperator eq -FilterValue $PublisherLogicalName if($publishers.Count -eq 0) { $publisherid = New-CrmRecord -EntityLogicalName publisher -Fields @{"uniquename"=$PublisherLogicalName;"friendlyname"=$PublisherName;"customizationprefix"=$PublisherPrefix} } else { $publisherid = $publishers.CrmRecords[0].publisherid } Write-Output "Publisher with id = $publisherid found or created ..." # CREATE SOLUTION $publisherref = New-CrmEntityReference -EntityLogicalName publisher -Id $publisherid $solutionid = New-CrmRecord -EntityLogicalName solution -Fields @{"uniquename"=$SolutionLogicalName;"friendlyname"=$SolutionName;"publisherid"=$publisherref;"version"="1.0.0.0"} Write-Output "" Write-Output "... solution created ($solutionid)." return $solutionid } Function Invoke-XrmSolutionVersionIncremention() { params( [string]$SolutionName ) $solutions = Get-CrmRecords -EntityLogicalName solution -FilterAttribute uniquename -FilterOperator eq -FilterValue $SolutionName -Fields uniquename,version,ismanaged $solution = $solutions.CrmRecords[0] $currentVersion = $solution.version $positionIndexOfLastDot = $currentVersion.LastIndexOf('.') $currentVersionLastNumber = [convert]::ToInt32($currentVersion.Substring($positionIndexOfLastDot+1,$currentVersion.Length-$positionIndexOfLastDot-1)) $solution.version = ($solution.version.SubString(0,$positionIndexOfLastDot+1))+($currentVersionLastNumber + 1).ToString() Set-CrmRecord -CrmRecord $solution Write-Output Version number of solution $solutionname updated to $solution.version } Function Import-XrmSolution(){ param ( [string]$solutionPath ) Try{ Write-Output "Importing solution ..." Write-Output "" Import-CrmSolution -SolutionFilePath $solutionPath -ActivatePlugIns $true -MaxWaitTimeInSeconds 12000 Write-Output "" Write-Output "... solution imported." }Catch { Write-Output "Error $_.Exception.Message" $_.Exception.InnerException.Message } } Function Export-XrmSolution(){ param ( [string]$solutionName, [string]$solutionPath ) Try{ Write-Output "Exporting solution ..." Write-Output "" Export-CrmSolution -SolutionName:$solutionname -SolutionZipFileName:$solutionname'_Managed.zip' -SolutionFilePath:$solutionPath -Managed:$true Invoke-XrmSolutionVersionIncremention -solutionname $solutionname Write-Output "" Write-Output "... solution exported." }Catch { Write-Output "Error $_.Exception.Message" $_.Exception.InnerException.Message } } Function Remove-XrmSolution(){ param ( [string]$solutionName ) Write-Output "Deleting solution ..." Write-Output "" $solutions = Get-CrmRecords -EntityLogicalName solution -FilterAttribute uniquename -FilterOperator eq -FilterValue $solutionName -Fields uniquename,version,ismanaged $solution = $solutions.CrmRecords[0] Remove-CrmRecord -CrmRecord $solution Write-Output "" Write-Output "... solution deleted." } |