build.ps1
#requires -Version 3 #requires -runasadministrator #Check if not in psdrive folder. Can cause issues with Pester Output tests. if ($pwd -cmatch '[A-Z]:') { # Successful match } else { Write-Error -Message 'Please don''t use PSDrives' exit } function Resolve-Module { [Cmdletbinding()] param ( [Parameter(Mandatory)] [string[]]$Name ) Process { foreach ($ModuleName in $Name) { $Module = Get-Module -Name $ModuleName -ListAvailable Write-Verbose -Message "Resolving Module $($ModuleName)" if ($Module) { $Version = $Module | Measure-Object -Property Version -Maximum | Select-Object -ExpandProperty Maximum $GalleryVersion = Find-Module -Name $ModuleName -Repository PSGallery | Measure-Object -Property Version -Maximum | Select-Object -ExpandProperty Maximum if ($Version -lt $GalleryVersion) { if ((Get-PSRepository -Name PSGallery).InstallationPolicy -ne 'Trusted') { Set-PSRepository -Name PSGallery -InstallationPolicy Trusted } Write-Verbose -Message "$($ModuleName) Installed Version [$($Version.tostring())] is outdated. Installing Gallery Version [$($GalleryVersion.tostring())]" Install-Module -Name $ModuleName -Force -SkipPublisherCheck #skip Import-Module -Name $ModuleName -Force -RequiredVersion $GalleryVersion } else { Write-Verbose -Message "Module Installed, Importing $($ModuleName)" Import-Module -Name $ModuleName -Force -RequiredVersion $Version } } else { Write-Verbose -Message "$($ModuleName) Missing, installing Module" Install-Module -Name $ModuleName -Force Import-Module -Name $ModuleName -Force -RequiredVersion $Version } } } } # Grab nuget bits, install modules, set build variables, start build. $null = Get-PackageProvider -Name NuGet -ForceBootstrap Resolve-Module Psake, PSDeploy, Pester, BuildHelpers Set-BuildEnvironment Invoke-psake .\psakeBuild.ps1 exit ( [int]( -not $psake.build_success ) ) #Invoke-psake -buildFile "$PSScriptRoot\psakeBuild.ps1" -taskList $Task -Verbose:$VerbosePreference |