mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2024-12-24 06:51:30 -06:00
1ac24c236e
* add main logic * finish logic
51 lines
2.7 KiB
PowerShell
51 lines
2.7 KiB
PowerShell
function Invoke-WinUtilpsProfile {
|
|
<#
|
|
.SYNOPSIS
|
|
Installs & applies the CTT Powershell Profile
|
|
#>
|
|
Invoke-WPFRunspace -Argumentlist $PROFILE -DebugPreference $DebugPreference -ScriptBlock {
|
|
param ( $psprofile)
|
|
function Invoke-PSSetup {
|
|
$url = "https://raw.githubusercontent.com/ChrisTitusTech/powershell-profile/main/Microsoft.PowerShell_profile.ps1"
|
|
$oldhash = Get-FileHash $psprofile -ErrorAction SilentlyContinue
|
|
Invoke-RestMethod $url -OutFile "$env:temp/Microsoft.PowerShell_profile.ps1"
|
|
$newhash = Get-FileHash "$env:temp/Microsoft.PowerShell_profile.ps1"
|
|
if ($newhash.Hash -ne $oldhash.Hash) {
|
|
write-host "===> Installing Profile.. <===" -ForegroundColor Yellow
|
|
# Starting new hidden shell process bc setup does not work in a runspace
|
|
Start-Process -FilePath "pwsh" -ArgumentList "-ExecutionPolicy Bypass -NoProfile -Command `"Invoke-Expression (Invoke-WebRequest `'https://github.com/ChrisTitusTech/powershell-profile/raw/main/setup.ps1`')`"" -WindowStyle Hidden -Wait
|
|
Write-Host "Profile has been installed. Please restart your shell to reflect changes!" -ForegroundColor Magenta
|
|
write-host "===> Finished <===" -ForegroundColor Yellow
|
|
} else {
|
|
Write-Host "Profile is up to date" -ForegroundColor Green
|
|
}
|
|
}
|
|
|
|
if (Get-Command "pwsh" -ErrorAction SilentlyContinue) {
|
|
if ($PSVersionTable.PSVersion.Major -ge 7) {
|
|
Invoke-PSSetup
|
|
}
|
|
else {
|
|
write-host "Profile requires Powershell 7, which is currently installed but not used!" -ForegroundColor Red
|
|
# Load the necessary assembly for Windows Forms
|
|
Add-Type -AssemblyName System.Windows.Forms
|
|
# Display the Yes/No message box
|
|
$question = [System.Windows.Forms.MessageBox]::Show("Profile requires Powershell 7, which is currently installed but not used! Do you want to install Profile for Powershell 7?", "Question",
|
|
[System.Windows.Forms.MessageBoxButtons]::YesNo,
|
|
[System.Windows.Forms.MessageBoxIcon]::Question)
|
|
|
|
# Check the result
|
|
if ($question -eq [System.Windows.Forms.DialogResult]::Yes) {
|
|
Invoke-PSSetup
|
|
}
|
|
else {
|
|
Write-Host "Not proceeding with the profile setup!"
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
write-host "Profile requires Powershell 7, which is not installed!" -ForegroundColor Red
|
|
}
|
|
}
|
|
}
|