Public/Install-Modules.ps1
#Set-StrictMode -Version Latest ##################################################### # Install-Modules ##################################################### <#PSScriptInfo .VERSION 0.0 .GUID 602bc07e-a621-4738-8c27-0edf4a4cea8e .AUTHOR David Walker, Sitecore Dave, Radical Dave .COMPANYNAME David Walker, Sitecore Dave, Radical Dave .COPYRIGHT David Walker, Sitecore Dave, Radical Dave .TAGS sitecore powershell local install iis solr .LICENSEURI https://github.com/SitecoreDave/SharedSitecore.SitecoreLocal/blob/main/LICENSE .PROJECTURI https://github.com/SitecoreDave/SharedSitecore.SitecoreLocal .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES #> <# .SYNOPSIS @@synoposis@@ .DESCRIPTION @@description@@ .EXAMPLE PS> .\Install-Modules 'name' .EXAMPLE PS> .\Install-Modules 'name' 'template' .EXAMPLE PS> .\Install-Modules 'name' 'template' 'd:\repos' .EXAMPLE PS> .\Install-Modules 'name' 'template' 'd:\repos' -Persist User .Link https://github.com/SitecoreDave/SharedSitecore.SitecoreLocal .OUTPUTS System.String #> ##################################################### # Install-Modules ##################################################### Function Install-Modules { [CmdletBinding(SupportsShouldProcess,PositionalBinding=$true)] Param( # Path to Configuration File [ version [ValidateScript({Test-Path $_ -PathType 'Leaf'})] [Parameter(Mandatory=$false)] [string] $ConfigurationFile = '', # path if you want to use custom [Parameter(Mandatory=$false)] [string]$ConfigurationRoot = '', # path if you want to use custom [default=[hostname].json] [Parameter(Mandatory=$false)] [string]$ConfigurationFileName = '', # path if you want to use custom [default=[hostname].json] [Parameter(Mandatory=$false)] [string]$hostname = '', # path if you want to use custom [Parameter(Mandatory=$false)] [string]$ConfigurationTemplate = 'XP0' ) [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 # Turning off progress bar to (greatly) speed up installation $Global:ProgressPreference = "SilentlyContinue" $PSScriptName = ($MyInvocation.MyCommand.Name.Replace(".ps1","")) $parametersResults = Get-Parameters $MyInvocation.MyCommand.Parameters $PSBoundParameters "$($PSScriptName):start" -Show -Stamp -StartWatch Write-Host $parametersResults.output -ForegroundColor Green $started = $parametersResults.started $StopWatch = New-Object -TypeName System.Diagnostics.Stopwatch $StopWatch.Start() $ErrorActionPreference = 'Stop' if ([string]::IsNullOrEmpty($ConfigurationFile)) { $PSScriptPath = Join-Path $PSScriptRoot $MyInvocation.MyCommand.Name $PSScriptFolder = Split-Path $PSScriptPath -Parent #$PSRootDrive = if (Get-PSDrive 'd' -ErrorAction SilentlyContinue) { 'd:' } else { 'c:' } $PSRepoPath = Split-Path $PSScriptFolder -Parent if ($PSRepoPath.IndexOf('src') -ne -1) { $PSRepoPath = Split-Path (Split-Path $PSRepoPath -Parent) -Parent } if (!$assets) { $assets = Join-Path $PSRepoPath "assets" } if (!$certs) { $certs = Join-Path $assets "certs" } if (!$ConfigurationRoot) { $ConfigurationRoot = Join-Path $assets "configs\$version\$ConfigurationTemplate" } if ($hostname) { if (!$ConfigurationFileName) { $ConfigurationFileName = "$hostname.json" } if (!$ConfigurationFile) { $ConfigurationFile = Join-Path $ConfigurationRoot $ConfigurationFileName } } } $config = Get-Content -Raw $ConfigurationFile -Encoding Ascii | ConvertFrom-Json $assets = $config.assets $site = $config.settings.site $sitecore = $config.settings.sitecore $solr = $config.settings.solr $sql = $config.settings.sql $xConnect = $config.settings.xConnect Write-Host "SiteName:$($site.hostName)" #Write-Host "DatabasePrefix:$($site.prefix)" Write-Host "WebRoot:$($site.webRoot)" Write-Host "CorePrefix:$($site.prefix)" #$PSScriptName = ($MyInvocation.MyCommand.Name.Replace(".ps1","")) #$parametersResults = Get-Parameters $MyInvocation.MyCommand.Parameters $PSBoundParameters -Message "$PSScriptName ended" -Show #Write-Host $parametersResults.output -ForegroundColor Green Write-Host "sitecoreVersion:$($assets.sitecoreVersion)" $version = $assets.sitecoreVersion if ($version.Contains(" ")) { $version = $version.Substring(0, $version.IndexOf(" ")) } Write-Host "version:$version" $bootLoaderPackagePath = [IO.Path]::Combine($assets.sitecoreazuretoolkit, "resources\$version\Addons\Sitecore.Cloud.Integration.Bootload.wdp.zip") $bootloaderConfigurationOverride = $([io.path]::combine($assets.sharedUtilitiesRoot, "assets", 'Sitecore.Cloud.Integration.Bootload.InstallJob.exe.config')) $bootloaderInstallationPath = $([io.path]::combine($site.webRoot, $site.hostName, "App_Data\tools\InstallJob")) Write-Host "bootLoaderPackagePath:$bootLoaderPackagePath" Write-Host "bootloaderConfigurationOverride:$bootloaderConfigurationOverride" Write-Host "bootloaderInstallationPath:$bootloaderInstallationPath" $moduleConfig = Join-Path $assets.configurationRoot "module-installation\module-master-install.json" Write-Host "moduleConfig:$moduleConfig" #Get-SitecoreDevCredentials $params = @{ Path = $moduleConfig SiteName = $site.hostName WebRoot = $site.webRoot XConnectSiteName = $xConnect.siteName SqlServer = $sql.server SqlAdminUser = $sql.adminUser SqlAdminPassword = $sql.adminPassword DatabasePrefix = $site.prefix SecurityUserName = $sql.securityUser SecurityUserPassword = $sql.SecurityPassword CoreUserName = $sql.coreUser CoreUserPassword = $sql.corePassword MasterUserName = $sql.masterUser MasterUserPassword = $sql.MasterPassword BootLoaderPackagePath = $bootLoaderPackagePath BootloaderConfigurationOverride = $bootloaderConfigurationOverride BootloaderInstallationPath = $bootloaderInstallationPath #LoginSession = $global:loginSession SolrUrl = $solr.url SolrRoot = $solr.root SolrService = $solr.serviceName CorePrefix = $site.prefix SitecoreAdminPassword = $sitecore.adminPassword } Write-Verbose "#####################################################`nInstall-Modules:`n$(($params | Format-Table -AutoSize -Wrap | Out-String).Trim())`n#####################################################" Push-Location $assets.configurationRoot $results = Install-SitecoreConfiguration @params -Verbose Pop-Location $StopWatch.Stop() $parametersResults = Get-Parameters $MyInvocation.MyCommand.Parameters $PSBoundParameters "$($PSScriptName):$results" -Show -StopWatch -Started $started Write-Host $parametersResults.output -ForegroundColor Green } |