diff --git a/bootstrap-Windows.ps1 b/bootstrap-Windows.ps1 index 8e4a3ab..a2edda4 100644 --- a/bootstrap-Windows.ps1 +++ b/bootstrap-Windows.ps1 @@ -9,79 +9,62 @@ if (-Not $is_elevated) { Invoke-WebRequest -Uri https://get.scoop.sh -OutFile $scoop_installer &$scoop_installer -ScoopDir "$env:LocalAppData/Scoop" -ScoopGlobalDir "$env:ProgramData/Scoop" - # Get the current script's path - $ScriptPath = $MyInvocation.MyCommand.Definition - - # Create a new process to run the script as administrator - $StartInfo = New-Object System.Diagnostics.ProcessStartInfo - $StartInfo.FileName = "powershell.exe" - - # Add parameters to the command-line arguments - $StartInfo.Arguments = "-NoProfile -ExecutionPolicy Bypass -File `"$ScriptPath`"" - - # Elevate privileges - $StartInfo.Verb = "runas" - - # Ensure output is visible to the user - $StartInfo.UseShellExecute = $true - $StartInfo.RedirectStandardOutput = $false - $StartInfo.RedirectStandardError = $false - $StartInfo.CreateNoWindow = $false - - # Start the elevated process - [System.Diagnostics.Process]::Start($StartInfo) | Out-Null - - # Exit the current (non-admin) process + Start-Process $ps -Verb runas -ArgumentList "& '$script'" exit } -# Running with elevated permissions +# Code to execute after elevation +Write-Host "Running as Administrator. Performing privileged actions..." -# Install 1Password -$decision = $Host.UI.PromptForChoice('Install 1Password', 'Proceed?', $choices, 0) -if ($decision -eq 0) { - $1password_installer = "$env:USERPROFILE/Downloads/1PasswordSetup-latest.exe" - Invoke-WebRequest -Uri "https://downloads.1password.com/win/1PasswordSetup-latest.exe" -OutFile "$1password_installer" - &$1password_installer - Remove-Item $1password_installer -} else { - echo 'Skipping 1Password' -} +# Pause the script so you can see any output +Write-Host "Press Enter to exit..." +Start-Sleep -Seconds 3600 # Sleep for an hour, effectively pausing the script -# Enable Hyper-V -$decision = $Host.UI.PromptForChoice('Enable Hyper-V', 'Proceed?', $choices, 0) -if ($decision -eq 0) { - Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -} else { - echo 'Skipping Hyper-V' -} +# # Install 1Password +# $decision = $Host.UI.PromptForChoice('Install 1Password', 'Proceed?', $choices, 0) +# if ($decision -eq 0) { +# $1password_installer = "$env:USERPROFILE/Downloads/1PasswordSetup-latest.exe" +# Invoke-WebRequest -Uri "https://downloads.1password.com/win/1PasswordSetup-latest.exe" -OutFile "$1password_installer" +# &$1password_installer +# Remove-Item $1password_installer +# } else { +# echo 'Skipping 1Password' +# } -# Enable Containters -$decision = $Host.UI.PromptForChoice('Enable Containers', 'Proceed?', $choices, 0) -if ($decision -eq 0) { - Enable-WindowsOptionalFeature -Online -FeatureName Containers -All -} else { - echo 'Skipping Containers' -} +# # Enable Hyper-V +# $decision = $Host.UI.PromptForChoice('Enable Hyper-V', 'Proceed?', $choices, 0) +# if ($decision -eq 0) { +# Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All +# } else { +# echo 'Skipping Hyper-V' +# } -# Get the shell application object -$shellApp = New-Object -ComObject "Shell.Application" +# # Enable Containters +# $decision = $Host.UI.PromptForChoice('Enable Containers', 'Proceed?', $choices, 0) +# if ($decision -eq 0) { +# Enable-WindowsOptionalFeature -Online -FeatureName Containers -All +# } else { +# echo 'Skipping Containers' +# } -# Run the command without elevation -$shellApp.ShellExecute("powershell.exe", "-NoProfile -Command `"& { $nonElevatedCommand }`"", "", "open", 0) +# # Get the shell application object +# $shellApp = New-Object -ComObject "Shell.Application" -# Start-Process -NoNewWindow -Credential "$env:UserDomain\$env:UserName" -FilePath "powershell.exe" -ArgumentList "-NoProfile -Command & { & $($command) }" -# Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile -Command & { & $($command) }" -Credential $user -WindowStyle Hidden +# # Run the command without elevation +# $shellApp.ShellExecute("powershell.exe", "-NoProfile -Command `"& { $nonElevatedCommand }`"", "", "open", 0) -# Install Chocolatey -iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) +# # Start-Process -NoNewWindow -Credential "$env:UserDomain\$env:UserName" -FilePath "powershell.exe" -ArgumentList "-NoProfile -Command & { & $($command) }" +# # Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile -Command & { & $($command) }" -Credential $user -WindowStyle Hidden -# Install SSH Server -$decision = $Host.UI.PromptForChoice('Install SSH Server', 'Proceed?', $choices, 0) -if ($decision -eq 0) { - choco install --yes "--package-parameters=/SSHServerFeature" openssh - Start-Service sshd - Set-Service -Name sshd -StartupType 'Automatic' -} else { - echo 'Skipping SSH Server' -} +# # Install Chocolatey +# iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) + +# # Install SSH Server +# $decision = $Host.UI.PromptForChoice('Install SSH Server', 'Proceed?', $choices, 0) +# if ($decision -eq 0) { +# choco install --yes "--package-parameters=/SSHServerFeature" openssh +# Start-Service sshd +# Set-Service -Name sshd -StartupType 'Automatic' +# } else { +# echo 'Skipping SSH Server' +# }