Files
setup-script/setupScript.ps1
2023-11-15 11:07:16 +01:00

184 lines
4.6 KiB
PowerShell

function Import-ScriptsFromUrls {
param (
[string[]] $ScriptUrls,
[string] $LocalPath
)
$scripts = @()
foreach ($url in $ScriptUrls) {
$fileName = Split-Path -Leaf $url
$localFile = Join-Path -Path $LocalPath -ChildPath $fileName
Write-Host "Downloading script $fileName to $localFile"
Invoke-WebRequest -Uri $url -OutFile $localFile -UseBasicParsing
Write-Host "Importing script from $localFile"
$scripts += $localFile
}
return $scripts
}
$baseUrl = "https://git.justw.tf/Lightemerald/setup-script/raw/branch/main/"
$scriptUrls = @(
($baseUrl + "setupTmp.ps1"),
($baseUrl + "setupOffice.ps1"),
($baseUrl + "setupUsers.ps1"),
($baseUrl + "setupReg.ps1"),
($baseUrl + "setupChoco.ps1"),
($baseUrl + "setupApps.ps1"),
($baseUrl + "setupUpdate.ps1"),
($baseUrl + "setupWDAC.ps1")
)
$scripts = Import-ScriptsFromUrls -ScriptUrls $scriptUrls -LocalPath (Join-Path $env:LOCALAPPDATA "Temp")
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process -Force
foreach ($script in $scripts) {
. $script
}
function Setup {
param (
[string] $Type
)
Write-Host "Performing $Type Installation..."
DownloadFiles -Type $Type
CheckOfficeInstall
SetupUsers
SetupEleveReg -username "Eleve"
EnableRDP
InstallChoco
ChocoInstallApps -Type $Type
InstallApps -Type $Type
UpdateWindows
Show-WDACMenu
Write-Host "Installation complete!"
Write-Host "Would you like to restart now? (y/n)"
$input = Read-Host
if ($input -eq "y") {
Clear-RecycleBin
Restart-Computer -Force
}
}
function Custom {
$Office = 0
$Users = 0
$EleveReg = 0
$RDP = 0
$Choco = 0
$ChocoApps = 0
$Update = 0
$input = Read-Host "Do you need to install Office? (y/n)"
if ($input -eq "y") {
$Office = 1
}
$input = Read-Host "Do you need to setup users? (y/n)"
if ($input -eq "y") {
$Users = 1
$input = Read-Host "Do you need to setup eleve registry? (y/n)"
if ($input -eq "y") {
$EleveReg = 1
}
}
$input = Read-Host "Do you need to enable RDP? (y/n)"
if ($input -eq "y") {
$RDP = 1
}
$input = Read-Host "Do you need to install chocolatey? (y/n)"
if ($input -eq "y") {
$Choco = 1
$input = Read-Host "Do you need to install chocolatey apps? (y/n)"
if ($input -eq "y") {
$ChocoApps = @()
do {
$input = Read-Host "Enter the name of the app you want to install (leave empty to stop)"
if ($input -ne "") {
$ChocoApps += $input
}
} while ($input -ne "")
}
}
$input = Read-Host "Do you need to update windows? (y/n)"
if ($input -eq "y") {
$Update = 1
}
SetupCustom -Office $Office -Users $Users -EleveReg $EleveReg -RDP $RDP -Choco $Choco -ChocoApps $ChocoApps -Update $Update
}
function SetupCustom {
param (
[bool] $Office,
[bool] $Users,
[bool] $EleveReg,
[bool] $RDP,
[bool] $Choco,
[array] $ChocoApps,
[bool] $Update
)
Write-Host "Performing Custom Installation..."
if ($Office) {
CheckOfficeInstall
}
if ($Users) {
SetupUsers
if ($EleveReg) {
SetupEleveReg -username "Eleve"
}
}
if ($RDP) {
EnableRDP
}
if ($Choco) {
InstallChoco
if ($ChocoApps) {
ChocoInstallApps -Type "Custom" -Apps $ChocoApps
}
}
if ($Update) {
UpdateWindows
}
Show-WDACMenu
Write-Host "Would you like to restart now? (y/n)"
$input = Read-Host
if ($input -eq "y") {
Clear-RecycleBin
Restart-Computer -Force
}
}
function Show-InstallationMenu {
$selection = $null
do {
Write-Host "Which type of installation would you like to perform?"
Write-Host "1. Labo"
Write-Host "2. Info"
Write-Host "3. Laptop"
Write-Host "4. Custom"
Write-Host "q. Exit"
$selection = Read-Host "Enter the number of your choice"
switch ($selection) {
"1" { Setup -Type "Labo" }
"2" { Setup -Type "Info" }
"3" { Setup -Type "Laptop" }
"4" { Custom }
"q" {
Write-Host "Exiting..."
exit
}
default { Write-Host "Invalid selection." }
}
} while ($selection -ne "1" -and $selection -ne "2" -and $selection -ne "3")
}
Show-InstallationMenu