Last active
June 26, 2024 18:41
-
-
Save jamie-tillman/2c3b73071aa483c1e5e0bc45b3857243 to your computer and use it in GitHub Desktop.
Boxstarter script to install Scenario private powershell module - requires internal usercode and password
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Write-Warning "WARNING: This script will probably cause your computer to automatically restart without warning at least a few times during the installation process. It's recommended that you exit all other programs to avoid data loss. If you don't want to do this right now, hit CTRL+C to exit" | |
pause | |
Update-ExecutionPolicy Unrestricted | |
#Boxstarter.WinConfig\Install-WindowsUpdate -getUpdatesFromMS -acceptEula | |
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) | |
choco feature enable -n=allowGlobalConfirmation | |
choco feature enable -n=useRememberedArgumentsForUpgrades | |
choco install boxstarter -y | |
choco install dotnet-6.0-sdk -y | |
choco install visualstudio2022buildtools -y | |
choco install visualstudio2022-workload-webbuildtools --package-parameters "--includeRecommended" -y | |
choco install visualstudio2022-workload-nodebuildtools -y | |
choco install visualstudio2022-workload-manageddesktopbuildtools -y | |
choco install visualstudio2022-workload-databuildtools -y | |
choco install netfx-4.7.2 -y | |
choco install nodejs --version=16.18.1 | |
# PowerShellGet. Do this early as reboots are required | |
$powershellGet = Get-InstalledModule -Name PowerShellGet -ErrorAction SilentlyContinue | |
if ($null -eq $powershellGet -or $powershellGet.Version -lt "1.4.4") { | |
Write-Host "Install-Module PowerShellGet" | |
Install-Module -Name "PowerShellGet" -AllowClobber -Force -Scope AllUsers -Confirm | |
# Exit equivalent | |
Invoke-Reboot | |
} | |
Write-Host "Excluding appdata NPM folder and Node.JS install folder from Windows Defender." | |
Add-MpPreference -ExclusionPath ([System.Environment]::ExpandEnvironmentVariables("%APPDATA%\npm\")) | |
Add-MpPreference -ExclusionPath (Get-ItemProperty "HKLM:SOFTWARE\Node.js" | Select-Object -Property InstallPath) | |
Write-Host "Excluding node and build related executables from Windows Defender." | |
("node", "node.exe", "msbuild", "npx") | foreach {Add-MpPreference -ExclusionProcess $_} | |
# This will install NuGet module if missing | |
Get-PackageProvider -Name NuGet -ForceBootstrap | |
Set-PSRepository PSGallery -InstallationPolicy Trusted | |
Install-Module dbatools -Repository PSGallery -Confirm:$false | |
Install-Module VSSetup -Repository PSGallery -Confirm:$false | |
Set-DbatoolsConfig -Name Import.EncryptionMessageCheck -Value $false -PassThru | Register-DbatoolsConfig | |
Set-DbatoolsInsecureConnection | |
#Import-Module $PSScriptRoot\..\Scenario.psm1 | |
$shortcutContent = "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"; | |
$desktopFolderPath = ([Environment]::GetFolderPath([Environment+SpecialFolder]::Desktop)) | |
$shortcutPath = [System.IO.Path]::Combine($desktopFolderPath, "Run-Me.lnk") | |
$scriptPath = [System.IO.Path]::Combine($desktopFolderPath, "Install-Scenario.ps1") | |
[IO.File]::WriteAllBytes($shortcutPath, [Convert]::FromBase64String($shortcutContent)); | |
$scriptContent = @' | |
$ErrorActionPreference = "Stop"; | |
iex "& { $(irm https://aka.ms/install-artifacts-credprovider.ps1) }" | |
$repoUrl = "https://pkgs.dev.azure.com/canopysoftware/_packaging/Powershell-Modules/nuget/v2"; | |
$repo = "PowershellDevOps"; | |
if ($null -eq (Get-PSRepository -Name $repo -ErrorAction Ignore)) { | |
Register-PSRepository -Name $repo -SourceLocation $repoUrl -PublishLocation $repoUrl -InstallationPolicy Trusted; | |
} | |
if ($null -eq (Get-PackageSource -Name $repo -ErrorAction Ignore)) { | |
Register-PackageSource -Name $repo -Location $repoUrl -ProviderName NuGet -Trusted -SkipValidate; | |
} | |
dotnet nuget add source https://pkgs.dev.azure.com/canopysoftware/_packaging/Canopy-Internal/nuget/v3/index.json --name Canopy-Internal | |
Install-Module Scenario -Confirm:$false; | |
Import-Module Scenario; | |
Install-ScenarioSystem; | |
$desktopFolderPath = ([Environment]::GetFolderPath([Environment+SpecialFolder]::Desktop)) | |
$shortcutPath = [System.IO.Path]::Combine($desktopFolderPath, "Run-Me.lnk") | |
$scriptPath = [System.IO.Path]::Combine($desktopFolderPath, "Install-Scenario.ps1") | |
Remove-Item $shortcutPath -Force; | |
Remove-Item $scriptPath -Force; | |
Write-Host "Scenario system setup complete. Exiting..."; | |
Sleep -Seconds 5 | |
'@; | |
Set-Content -Value $scriptContent -Path $scriptPath | |
Write-Host @' | |
Preliminary system setup is complete. Now you should double-click the "Run-Me" shortcut on your desktop to install the Scenario module and supporting services. | |
'@ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment