Skip to content

Instantly share code, notes, and snippets.

@RubenZagon
Last active June 23, 2024 04:05
Show Gist options
  • Select an option

  • Save RubenZagon/1d4931f2547757c3d5ddce75f6b65378 to your computer and use it in GitHub Desktop.

Select an option

Save RubenZagon/1d4931f2547757c3d5ddce75f6b65378 to your computer and use it in GitHub Desktop.

Revisions

  1. RubenZagon revised this gist Jan 31, 2023. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -238,8 +238,8 @@ iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocola

    # Install WinGet, if not already installed
    # From crutkas's gist - https://gist.github.com/crutkas/6c2096eae387e544bd05cde246f23901
    $hasPackageManager = Get-AppPackage -name "Microsoft.DesktopAppInstaller"
    if (!$hasPackageManager)
    #$hasPackageManager = Get-AppPackage -name "Microsoft.DesktopAppInstaller"
    if (!(Get-AppPackage -name "Microsoft.DesktopAppInstaller"))
    {
    Write-Verbose -Message "Installing WinGet..."
    @'
  2. RubenZagon revised this gist Jan 31, 2023. 1 changed file with 45 additions and 65 deletions.
    110 changes: 45 additions & 65 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -11,7 +11,7 @@ Creation inspired by the script created by Mike Pruett
    **NOTE** Will configure the Execution Policy for the "CurrentUser" to Unrestricted.
    Author: Rubén Zamora
    Date: January 26th, 2023
    Last Updated on January 30th, 2023
    Last Updated on January 31th, 2023
    #>

    $VerbosePreference = "Continue"
    @@ -48,9 +48,12 @@ function Install-WinGetApp
    # winget install --silent --id "$PackageID" --accept-source-agreements --accept-package-agreements
    #}
    Write-Verbose -Message "Installing $Package"
    try {
    try
    {
    winget install --silent --id "$PackageID" --accept-source-agreements --accept-package-agreements
    } catch {
    }
    catch
    {
    Write-Output "Puedes cerrar esta ventana y cuando el script termine, vuelve a lanzarlo en otra vetana nueva en administrador"
    Write-Output "para que terminen de cargarse las configuracines. Si sigue sin funcionar es bueno que reinicies momentaneamente el ordenador..."
    Exit
    @@ -277,9 +280,14 @@ Start-Process -FilePath "PowerShell" -ArgumentList "${Env:Temp}\openssh.ps1" -Ve
    Remove-Item -Path "${Env:Temp}\openssh.ps1" -Force

    # Se prueba si está winget bien instalado, si no que se reinicie y vuelva a lanzar el comando
    try{
    try
    {
    Write-Output "Comprobando que winget está bien instalado..."
    winget --list
    } catch {
    Write-Output "Okay !"
    }
    catch
    {
    Start-Sleep -Seconds 5
    Write-Error "`nReiniciar el ordenador para que se cojan bien los cambios y comenzar hacer la instalación sin probla"
    Write-Output "`n`nPor favor, tras reiniciar vuelve a lanzar el script para continuar :)`n`n"
    @@ -309,10 +317,17 @@ M
    IMPORTANTE: Si en ocasiones sientes que 'esta trabado el script' pulsa un par de veces (ENTER) para seguir teniendo feedback del proceso
    `n"
    if ($( Read-Host -Prompt "Lo has entendido bien? ([Y]es/[N]o)?" ) -eq "n")

    while ($confirmation -eq $null)
    {
    Write-Host "`n`nEntonces es mejor que hagas la instalación de las aplicaciones de manera manual, vamos a salir de este modo :)"
    exit

    $confirmation = Read-Host -Prompt "Lo has entendido bien? ([Y]es/[N]o)?"
    if ($confirmation -eq "n" -or $confirmation -eq "N")
    {
    Write-Host "`n`nEntonces es mejor que hagas la instalación de las aplicaciones de manera manual, vamos a salir de este modo :)"
    exit
    }

    }

    Write-Host "`nComenzamos la instalación ...`n"
    @@ -646,30 +661,34 @@ Deseas realizar la instalaci
    `n
    Para ello debemos instalar una distribución de Linux, en este caso instalaremos Ubuntu 20.04, para que funcione correctamente. Y se reiniciará el equipo para aplicar los cambios.
    `n"
    if ($( Read-Host -Prompt "Deseas continuar ([Y]es/[N]o)?" ) -eq "y")

    while ($dockerConfirmation -eq $null)
    {
    Write-Verbose -Message "Instalando Ubuntu 20.04..."
    wsl --set-default-version 2
    wsl --update
    wsl --install -d Ubuntu-20.04
    Start-Sleep -Seconds 5
    if ((wsl --list --verbose))
    $dockerConfirmation = Read-Host -Prompt "Deseas continuar ([Y]es/[N]o)?"
    if ($dockerConfirmation -eq "y" -or $dockerConfirmation -eq "Y")
    {
    # Aqui tiene que verificar que se ha instalado la distribución linux primero... antes de continuar
    Write-Verbose -Message "Instalando Docker Desktop..."
    winget install --exact --id Docker.DockerDesktop --accept-source-agreements --accept-package-agreements
    Write-Verbose -Message "Reiniciando equipo..."
    Write-Verbose -Message "Instalando Ubuntu 20.04..."
    wsl --set-default-version 2
    wsl --update
    wsl --install -d Ubuntu-20.04
    Start-Sleep -Seconds 5
    Restart-Computer -Force
    }
    else
    {
    Write-Verbose -Message "Se necesita instalar una distribución de Linux para instalar Docker, reinicia el script tras hacer esto."
    if ((wsl --list --verbose))
    {
    # Aqui tiene que verificar que se ha instalado la distribución linux primero... antes de continuar
    Write-Verbose -Message "Instalando Docker Desktop..."
    winget install --exact --id Docker.DockerDesktop --accept-source-agreements --accept-package-agreements
    Write-Verbose -Message "Reiniciando equipo..."
    Start-Sleep -Seconds 5
    Restart-Computer -Force
    }
    else
    {
    Write-Verbose -Message "Se necesita instalar una distribución de Linux para instalar Docker, reinicia el script tras hacer esto."
    }
    }
    }



    Write-Output "`nInstalación completada! Por favor reinicia tu máquina para que terminen de aplicarse los cambios!"
    Start-Sleep -Seconds 3
    if ($( Read-Host -Prompt "`nQuieres reiniciar ahora para aplicar los cambios ([Y]es/[N]o)?" ) -eq "y")
    @@ -686,50 +705,11 @@ else
    TODO:
    Ver cómo hacer para instalar plugins en Google Chrome o tal
    Configuracione y plugins de Obsidian
    Añadir alias y configuracines útiles de shell
    La instalación de Docker parece que se medio complica, entiendo que los pasos que habría que seguir bien serían:
    1. wsl --install Ubuntu-20.04
    2. winget install --exact --id Docker.DockerDesktop --accept-source-agreements --accept-package-agreements
    3. Restart-Computer -Force
    Preparar instalación mínima, recomendada
    Preparar preguntar por qué navegador web quieres instalar (multiple-opciontes)
    -------
    Parece que primero tengo que instalar Scoop de manera normal, para evitar lanzarlo en modo administrador, por problemas,
    una vez verifique que est´´ instalado el scoop saltarse el menú inicial
    -----
    Que tras hacer las instalaciones de WinGet, no se abran las aplicaciones automáticamente
    Y hacer también que la instalación abra una nueva ventana y continue con la instalación, para evitar tener que estar reseteando y eso..
    Se puede lanzar esto: en cada parte que necesito reiniciar.
    ```
    Start-Process powershell -ArgumentList "-NoProfile", "-ExecutionPolicy", "Bypass", "-Command", "iex ((New-Object System.Net.WebClient).DownloadString(`'https://gist.githubusercontent.com/RubenZagon/1d4931f2547757c3d5ddce75f6b65378/raw/powershell-setup.ps1`'))" -Verb runAs
    ```
    Que tras hacer las instalaciones de WinGet, no se abran las aplicaciones automáticamente
    #>

    <#
    COMANDOS UTILES
    Links utiles:
    - https://4sysops.com/archives/install-windows-subsystem-for-linux-wsl-in-windows-11/
    - https://4sysops.com/archives/install-docker-in-windows-10-and-windows-11/
    ----- If your system is running Windows 10 version 2004 (build 19041 or higher) or Windows 11
    Instalar distribución de linux
    wsl --install Ubuntu-20.04
    Reiniciar el equipo
    Restart-Computer -Force
    #>

  3. RubenZagon revised this gist Jan 31, 2023. 1 changed file with 9 additions and 5 deletions.
    14 changes: 9 additions & 5 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -276,14 +276,18 @@ if ((Get-WindowsCapability -Online -Name OpenSSH.Client*).State -ne "Installed")
    Start-Process -FilePath "PowerShell" -ArgumentList "${Env:Temp}\openssh.ps1" -Verb RunAs -Wait -WindowStyle Hidden
    Remove-Item -Path "${Env:Temp}\openssh.ps1" -Force

    if (!$hasPackageManager)
    {
    # Se prueba si está winget bien instalado, si no que se reinicie y vuelva a lanzar el comando
    try{
    winget --list
    } catch {
    Start-Sleep -Seconds 5
    Write-Error "Se necesita cerrar esta ventana de Power Shell y abrir otra, y vuelve a lanzar el script"
    exit
    Write-Error "`nReiniciar el ordenador para que se cojan bien los cambios y comenzar hacer la instalación sin probla"
    Write-Output "`n`nPor favor, tras reiniciar vuelve a lanzar el script para continuar :)`n`n"
    Write-Output "Reiniciando en 10 segundos..."
    Start-Sleep -Seconds 10
    Restart-Computer -Force
    }


    if ((Get-Command -Name "choco" -CommandType Application -ErrorAction SilentlyContinue))
    {
    Write-Host "`n`n
  4. RubenZagon revised this gist Jan 31, 2023. 1 changed file with 7 additions and 1 deletion.
    8 changes: 7 additions & 1 deletion powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -48,7 +48,13 @@ function Install-WinGetApp
    # winget install --silent --id "$PackageID" --accept-source-agreements --accept-package-agreements
    #}
    Write-Verbose -Message "Installing $Package"
    winget install --silent --id "$PackageID" --accept-source-agreements --accept-package-agreements
    try {
    winget install --silent --id "$PackageID" --accept-source-agreements --accept-package-agreements
    } catch {
    Write-Output "Puedes cerrar esta ventana y cuando el script termine, vuelve a lanzarlo en otra vetana nueva en administrador"
    Write-Output "para que terminen de cargarse las configuracines. Si sigue sin funcionar es bueno que reinicies momentaneamente el ordenador..."
    Exit
    }
    }

    function Install-ChocoApp
  5. RubenZagon revised this gist Jan 31, 2023. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -188,6 +188,8 @@ function Enable-Bucket
    function Continue-Installation-In-New-Window
    {
    Write-Output "Continuamos la instalación en otra ventana para cargar las nuevas configuraciones..."
    Write-Output "Puedes cerrar esta ventana y cuando el script termine, vuelve a lanzarlo en otra vetana nueva en administrador"
    Write-Output "para que terminen de cargarse las configuracines."
    Start-Process powershell -ArgumentList "-NoProfile", "-ExecutionPolicy", "Bypass", "-Command", "iex ((New-Object System.Net.WebClient).DownloadString(`'https://gist.githubusercontent.com/RubenZagon/1d4931f2547757c3d5ddce75f6b65378/raw/powershell-setup.ps1`'))" -Verb runAs
    Exit
    }
  6. RubenZagon revised this gist Jan 31, 2023. 1 changed file with 0 additions and 1 deletion.
    1 change: 0 additions & 1 deletion powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -270,7 +270,6 @@ Remove-Item -Path "${Env:Temp}\openssh.ps1" -Force

    if (!$hasPackageManager)
    {
    Write-Host "Restart the script to continue..."
    Start-Sleep -Seconds 5
    Write-Error "Se necesita cerrar esta ventana de Power Shell y abrir otra, y vuelve a lanzar el script"
    exit
  7. RubenZagon revised this gist Jan 31, 2023. 1 changed file with 0 additions and 3 deletions.
    3 changes: 0 additions & 3 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -268,9 +268,6 @@ if ((Get-WindowsCapability -Online -Name OpenSSH.Client*).State -ne "Installed")
    Start-Process -FilePath "PowerShell" -ArgumentList "${Env:Temp}\openssh.ps1" -Verb RunAs -Wait -WindowStyle Hidden
    Remove-Item -Path "${Env:Temp}\openssh.ps1" -Force

    # Continue-Installation-In-New-Window
    # Exit

    if (!$hasPackageManager)
    {
    Write-Host "Restart the script to continue..."
  8. RubenZagon revised this gist Jan 31, 2023. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -268,13 +268,13 @@ if ((Get-WindowsCapability -Online -Name OpenSSH.Client*).State -ne "Installed")
    Start-Process -FilePath "PowerShell" -ArgumentList "${Env:Temp}\openssh.ps1" -Verb RunAs -Wait -WindowStyle Hidden
    Remove-Item -Path "${Env:Temp}\openssh.ps1" -Force

    Write-Host "Restart the script to continue..."
    Start-Sleep -Seconds 5
    # Continue-Installation-In-New-Window
    #Exit
    # Exit

    if (!$hasPackageManager)
    {
    Write-Host "Restart the script to continue..."
    Start-Sleep -Seconds 5
    Write-Error "Se necesita cerrar esta ventana de Power Shell y abrir otra, y vuelve a lanzar el script"
    exit
    }
  9. RubenZagon revised this gist Jan 31, 2023. 1 changed file with 12 additions and 6 deletions.
    18 changes: 12 additions & 6 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -227,8 +227,8 @@ iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocola

    # Install WinGet, if not already installed
    # From crutkas's gist - https://gist.github.com/crutkas/6c2096eae387e544bd05cde246f23901
    #$hasPackageManager = Get-AppPackage -name "Microsoft.DesktopAppInstaller"
    if (!(Get-AppPackage -name "Microsoft.DesktopAppInstaller"))
    $hasPackageManager = Get-AppPackage -name "Microsoft.DesktopAppInstaller"
    if (!$hasPackageManager)
    {
    Write-Verbose -Message "Installing WinGet..."
    @'
    @@ -268,11 +268,17 @@ if ((Get-WindowsCapability -Online -Name OpenSSH.Client*).State -ne "Installed")
    Start-Process -FilePath "PowerShell" -ArgumentList "${Env:Temp}\openssh.ps1" -Verb RunAs -Wait -WindowStyle Hidden
    Remove-Item -Path "${Env:Temp}\openssh.ps1" -Force

    Start-Sleep -Seconds 5
    Write-Host "Restart the script to continue..."
    Start-Sleep -Seconds 5
    # Continue-Installation-In-New-Window
    #Exit

    if (!$hasPackageManager)
    {
    Write-Error "Se necesita cerrar esta ventana de Power Shell y abrir otra, y vuelve a lanzar el script"
    exit
    }


    if ((Get-Command -Name "choco" -CommandType Application -ErrorAction SilentlyContinue))
    {
    @@ -295,7 +301,7 @@ M
    IMPORTANTE: Si en ocasiones sientes que 'esta trabado el script' pulsa un par de veces (ENTER) para seguir teniendo feedback del proceso
    `n"
    if ($( Read-Host -Prompt "Lo has entendido bien? (y/n)?" ) -eq "n")
    if ($( Read-Host -Prompt "Lo has entendido bien? ([Y]es/[N]o)?" ) -eq "n")
    {
    Write-Host "`n`nEntonces es mejor que hagas la instalación de las aplicaciones de manera manual, vamos a salir de este modo :)"
    exit
    @@ -632,7 +638,7 @@ Deseas realizar la instalaci
    `n
    Para ello debemos instalar una distribución de Linux, en este caso instalaremos Ubuntu 20.04, para que funcione correctamente. Y se reiniciará el equipo para aplicar los cambios.
    `n"
    if ($( Read-Host -Prompt "Deseas continuar (y/n)?" ) -eq "y")
    if ($( Read-Host -Prompt "Deseas continuar ([Y]es/[N]o)?" ) -eq "y")
    {
    Write-Verbose -Message "Instalando Ubuntu 20.04..."
    wsl --set-default-version 2
    @@ -658,7 +664,7 @@ if ($( Read-Host -Prompt "Deseas continuar (y/n)?" ) -eq "y")

    Write-Output "`nInstalación completada! Por favor reinicia tu máquina para que terminen de aplicarse los cambios!"
    Start-Sleep -Seconds 3
    if ($( Read-Host -Prompt "`nQuieres reiniciar ahora para aplicar los cambios (y/n)?" ) -eq "y")
    if ($( Read-Host -Prompt "`nQuieres reiniciar ahora para aplicar los cambios ([Y]es/[N]o)?" ) -eq "y")
    {
    Restart-Computer -Force
    }
  10. RubenZagon revised this gist Jan 31, 2023. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -271,7 +271,7 @@ Remove-Item -Path "${Env:Temp}\openssh.ps1" -Force
    Start-Sleep -Seconds 5
    Write-Host "Restart the script to continue..."
    # Continue-Installation-In-New-Window
    Exit
    #Exit


    if ((Get-Command -Name "choco" -CommandType Application -ErrorAction SilentlyContinue))
  11. RubenZagon revised this gist Jan 31, 2023. 1 changed file with 38 additions and 40 deletions.
    78 changes: 38 additions & 40 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -203,37 +203,35 @@ if ((Get-ExecutionPolicy -Scope CurrentUser) -notcontains "Unrestricted")
    Break
    }

    if (!(Get-AppPackage -name "Microsoft.DesktopAppInstaller"))
    # Install Scoop, if not already installed
    #$scoopInstalled = Get-Command "scoop"
    if (!(Get-Command -Name "scoop" -CommandType Application -ErrorAction SilentlyContinue))
    {
    # Install Scoop, if not already installed
    #$scoopInstalled = Get-Command "scoop"
    if (!(Get-Command -Name "scoop" -CommandType Application -ErrorAction SilentlyContinue))
    {
    Write-Verbose -Message "Installing Scoop..."
    iex "& {$( irm get.scoop.sh )} -RunAsAdmin"
    }
    Write-Verbose -Message "Installing Scoop..."
    iex "& {$( irm get.scoop.sh )} -RunAsAdmin"
    }


    # Install Chocolatey, if not already installed
    #$chocoInstalled = Get-Command -Name "choco" -CommandType Application -ErrorAction SilentlyContinue | Out-Null
    if (!(Get-Command -Name "choco" -CommandType Application -ErrorAction SilentlyContinue))
    {
    Write-Verbose -Message "Installing Chocolatey..."
    @'
    # Install Chocolatey, if not already installed
    #$chocoInstalled = Get-Command -Name "choco" -CommandType Application -ErrorAction SilentlyContinue | Out-Null
    if (!(Get-Command -Name "choco" -CommandType Application -ErrorAction SilentlyContinue))
    {
    Write-Verbose -Message "Installing Chocolatey..."
    @'
    [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
    iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
    '@ > $Env:Temp\choco.ps1
    Start-Process -FilePath "PowerShell" -ArgumentList "$Env:Temp\choco.ps1" -Verb RunAs -Wait
    Remove-Item -Path $Env:Temp\choco.ps1 -Force
    }
    Start-Process -FilePath "PowerShell" -ArgumentList "$Env:Temp\choco.ps1" -Verb RunAs -Wait
    Remove-Item -Path $Env:Temp\choco.ps1 -Force
    }

    # Install WinGet, if not already installed
    # From crutkas's gist - https://gist.github.com/crutkas/6c2096eae387e544bd05cde246f23901
    #$hasPackageManager = Get-AppPackage -name "Microsoft.DesktopAppInstaller"
    if (!(Get-AppPackage -name "Microsoft.DesktopAppInstaller"))
    {
    Write-Verbose -Message "Installing WinGet..."
    @'
    # Install WinGet, if not already installed
    # From crutkas's gist - https://gist.github.com/crutkas/6c2096eae387e544bd05cde246f23901
    #$hasPackageManager = Get-AppPackage -name "Microsoft.DesktopAppInstaller"
    if (!(Get-AppPackage -name "Microsoft.DesktopAppInstaller"))
    {
    Write-Verbose -Message "Installing WinGet..."
    @'
    # Set URL and Enable TLSv12
    $releases_url = "https://api.github.com/repos/microsoft/winget-cli/releases/latest"
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    @@ -251,30 +249,30 @@ $latestRelease = $releases.assets | Where { $_.browser_download_url.EndsWith('ms
    # Install Microsoft.DesktopAppInstaller Package
    Add-AppxPackage -Path $latestRelease.browser_download_url
    '@ > $Env:Temp\winget.ps1
    Start-Process -FilePath "PowerShell" -ArgumentList "$Env:Temp\winget.ps1" -Verb RunAs -Wait
    Remove-Item -Path $Env:Temp\winget.ps1 -Force
    }
    Start-Process -FilePath "PowerShell" -ArgumentList "$Env:Temp\winget.ps1" -Verb RunAs -Wait
    Remove-Item -Path $Env:Temp\winget.ps1 -Force
    }

    # Only install OpenSSH Package, if not on Windows 10
    if ([Environment]::OSVersion.Version.Major -lt 10)
    {
    Install-ScoopApp -Package "openssh"
    }
    # Only install OpenSSH Package, if not on Windows 10
    if ([Environment]::OSVersion.Version.Major -lt 10)
    {
    Install-ScoopApp -Package "openssh"
    }

    # Install OpenSSH.Client on Windows 10+
    @'
    # Install OpenSSH.Client on Windows 10+
    @'
    if ((Get-WindowsCapability -Online -Name OpenSSH.Client*).State -ne "Installed") {
    Add-WindowsCapability -Online -Name OpenSSH.Client*
    }
    '@ > "${Env:Temp}\openssh.ps1"
    Start-Process -FilePath "PowerShell" -ArgumentList "${Env:Temp}\openssh.ps1" -Verb RunAs -Wait -WindowStyle Hidden
    Remove-Item -Path "${Env:Temp}\openssh.ps1" -Force
    Start-Process -FilePath "PowerShell" -ArgumentList "${Env:Temp}\openssh.ps1" -Verb RunAs -Wait -WindowStyle Hidden
    Remove-Item -Path "${Env:Temp}\openssh.ps1" -Force

    Start-Sleep -Seconds 5
    Write-Host "Restart the script to continue..."
    Start-Sleep -Seconds 5
    Write-Host "Restart the script to continue..."
    # Continue-Installation-In-New-Window
    Exit
    }
    Exit


    if ((Get-Command -Name "choco" -CommandType Application -ErrorAction SilentlyContinue))
    {
  12. RubenZagon revised this gist Jan 31, 2023. 1 changed file with 2 additions and 1 deletion.
    3 changes: 2 additions & 1 deletion powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -271,7 +271,8 @@ if ((Get-WindowsCapability -Online -Name OpenSSH.Client*).State -ne "Installed")
    Remove-Item -Path "${Env:Temp}\openssh.ps1" -Force

    Start-Sleep -Seconds 5
    Continue-Installation-In-New-Window
    Write-Host "Restart the script to continue..."
    # Continue-Installation-In-New-Window
    Exit
    }

  13. RubenZagon revised this gist Jan 31, 2023. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -203,7 +203,7 @@ if ((Get-ExecutionPolicy -Scope CurrentUser) -notcontains "Unrestricted")
    Break
    }

    if ((Get-AppPackage -name "Microsoft.DesktopAppInstaller"))
    if (!(Get-AppPackage -name "Microsoft.DesktopAppInstaller"))
    {
    # Install Scoop, if not already installed
    #$scoopInstalled = Get-Command "scoop"
  14. RubenZagon revised this gist Jan 31, 2023. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -406,7 +406,7 @@ Register-ScheduledTask -TaskName "Aria2RPC" -Action $Action -Trigger $Trigger -P
    Enable-Bucket -Bucket "extras"
    Enable-Bucket -Bucket "java"
    Enable-Bucket -Bucket "nirsoft"
    scoop bucket add foosel https: //github.com/foosel/scoop-bucket
    scoop bucket add foosel https://github.com/foosel/scoop-bucket

    # UNIX Tools
    Write-Verbose -Message "Removing curl Alias..."
    @@ -418,7 +418,7 @@ Write-Verbose -Message "Removing curl Alias..."
    #>
    if (Get-Alias -Name curl -ErrorAction SilentlyContinue)
    {
    Remove-Item alias: curl
    Remove-Item alias:curl
    }
    if (!($Env:TERM))
    {
  15. RubenZagon revised this gist Jan 31, 2023. 1 changed file with 4 additions and 4 deletions.
    8 changes: 4 additions & 4 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -397,7 +397,7 @@ $Trigger = New-ScheduledTaskTrigger -AtStartup
    $Principal = New-ScheduledTaskPrincipal -UserID "$Env:ComputerName\$Env:Username" -LogonType S4U
    $Settings = New-ScheduledTaskSettingsSet -ExecutionTimeLimit 0 -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
    Register-ScheduledTask -TaskName "Aria2RPC" -Action $Action -Trigger $Trigger -Principal $Principal -Settings $Settings
    '@ > $Env: Temp\aria2.ps1
    '@ > $Env:Temp\aria2.ps1
    Start-Process -FilePath "PowerShell" -ArgumentList "$Env:Temp\aria2.ps1" -Verb RunAs -Wait #-WindowStyle Hidden
    Remove-Item -Path $Env:Temp\aria2.ps1 -Force
    }
    @@ -420,7 +420,7 @@ if (Get-Alias -Name curl -ErrorAction SilentlyContinue)
    {
    Remove-Item alias: curl
    }
    if (!($Env: TERM))
    if (!($Env:TERM))
    {
    Write-Verbose -Message "Setting TERM User Environment Variable"
    [System.Environment]::SetEnvironmentVariable("TERM", "xterm-256color", "USER")
    @@ -603,9 +603,9 @@ if (!$PS7)
    Write-Verbose -Message "Installing PowerShell 7..."
    @'
    iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Quiet"
    '@ > $Env: Temp\ps7.ps1
    '@ > $Env:Temp\ps7.ps1
    Start-Process -FilePath "PowerShell" -ArgumentList "$Env:Temp\ps7.ps1" -Verb RunAs -Wait -WindowStyle Hidden
    Remove-Item -Path $Env: Temp\ps7.ps1 -Force
    Remove-Item -Path $Env:Temp\ps7.ps1 -Force
    }
    # Pin PowerShell 7 to Taskbar
    Write-Verbose -Message "Pin PowerShell 7 to Taskbar..."
  16. RubenZagon revised this gist Jan 31, 2023. 1 changed file with 85 additions and 51 deletions.
    136 changes: 85 additions & 51 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -203,35 +203,8 @@ if ((Get-ExecutionPolicy -Scope CurrentUser) -notcontains "Unrestricted")
    Break
    }

    if (!(Get-Command -Name "choco" -CommandType Application -ErrorAction SilentlyContinue))
    if ((Get-AppPackage -name "Microsoft.DesktopAppInstaller"))
    {
    Write-Host "`n`n
    Vamos a comenzar la instalación auto-mágica de una serie de configuraciones para que sea más fácil programar
    en Windows, para ello vamos a instalar mínimo las siguientes aplicaciones:
    - Microsoft.PowerToys: Nos da un sinfin de herramientas útiles
    - PuTTY:
    - Git:
    - WinRAR: Para extraer paquetes .rar
    - Slack: Comunicación por chat
    - Zoom: Para hacer videollamadas
    - JetBrains -Toolbox: Gestor para instalar IDEs de JetBrains
    - Bitwarden: Gestor de contraseñas
    - Malwarebytes: Antivirus
    - Greenshot: Para hacer capturas de pantallas, con más utilidades
    - chrisant996.Clink: Un add-on para la consola de Windows que mejora la funcionalidad y la experiencia de usuario al agregar características como el autocompletado y la compatibilidad con la línea de comandos Unix.
    `n
    Más adelante se preguntará por qué navegadores webs quieres instalar y aplicaciones opcionales.
    IMPORTANTE: Si en ocasiones sientes que 'esta trabado el script' pulsa un par de veces (ENTER) para seguir teniendo feedback del proceso
    `n"
    if ($( Read-Host -Prompt "Lo has entendido bien? (y/n)?" ) -eq "n")
    {
    Write-Host "`n`nEntonces es mejor que hagas la instalación de las aplicaciones de manera manual, vamos a salir de este modo :)"
    exit
    }

    Write-Host "`nComenzamos la instalación ...`n"

    # Install Scoop, if not already installed
    #$scoopInstalled = Get-Command "scoop"
    if (!(Get-Command -Name "scoop" -CommandType Application -ErrorAction SilentlyContinue))
    @@ -297,11 +270,42 @@ if ((Get-WindowsCapability -Online -Name OpenSSH.Client*).State -ne "Installed")
    Start-Process -FilePath "PowerShell" -ArgumentList "${Env:Temp}\openssh.ps1" -Verb RunAs -Wait -WindowStyle Hidden
    Remove-Item -Path "${Env:Temp}\openssh.ps1" -Force


    Start-Sleep -Seconds 5
    Continue-Installation-In-New-Window
    Exit
    }

    if ((Get-Command -Name "choco" -CommandType Application -ErrorAction SilentlyContinue))
    {
    Write-Host "`n`n
    Vamos a comenzar la instalación auto-mágica de una serie de configuraciones para que sea más fácil programar
    en Windows, para ello vamos a instalar mínimo las siguientes aplicaciones:
    - Microsoft.PowerToys: Nos da un sinfin de herramientas útiles
    - PuTTY:
    - Git:
    - WinRAR: Para extraer paquetes .rar
    - Slack: Comunicación por chat
    - Zoom: Para hacer videollamadas
    - JetBrains -Toolbox: Gestor para instalar IDEs de JetBrains
    - Bitwarden: Gestor de contraseñas
    - Malwarebytes: Antivirus
    - Greenshot: Para hacer capturas de pantallas, con más utilidades
    - chrisant996.Clink: Un add-on para la consola de Windows que mejora la funcionalidad y la experiencia de usuario al agregar características como el autocompletado y la compatibilidad con la línea de comandos Unix.
    `n
    Más adelante se preguntará por qué navegadores webs quieres instalar y aplicaciones opcionales.
    IMPORTANTE: Si en ocasiones sientes que 'esta trabado el script' pulsa un par de veces (ENTER) para seguir teniendo feedback del proceso
    `n"
    if ($( Read-Host -Prompt "Lo has entendido bien? (y/n)?" ) -eq "n")
    {
    Write-Host "`n`nEntonces es mejor que hagas la instalación de las aplicaciones de manera manual, vamos a salir de este modo :)"
    exit
    }

    Write-Host "`nComenzamos la instalación ...`n"

    }

    # Configure git
    Write-Verbose -Message "Installing Git..."
    if (Get-Command -Name "choco" -CommandType Application -ErrorAction SilentlyContinue)
    @@ -393,7 +397,7 @@ $Trigger = New-ScheduledTaskTrigger -AtStartup
    $Principal = New-ScheduledTaskPrincipal -UserID "$Env:ComputerName\$Env:Username" -LogonType S4U
    $Settings = New-ScheduledTaskSettingsSet -ExecutionTimeLimit 0 -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
    Register-ScheduledTask -TaskName "Aria2RPC" -Action $Action -Trigger $Trigger -Principal $Principal -Settings $Settings
    '@ > $Env:Temp\aria2.ps1
    '@ > $Env: Temp\aria2.ps1
    Start-Process -FilePath "PowerShell" -ArgumentList "$Env:Temp\aria2.ps1" -Verb RunAs -Wait #-WindowStyle Hidden
    Remove-Item -Path $Env:Temp\aria2.ps1 -Force
    }
    @@ -402,7 +406,7 @@ Register-ScheduledTask -TaskName "Aria2RPC" -Action $Action -Trigger $Trigger -P
    Enable-Bucket -Bucket "extras"
    Enable-Bucket -Bucket "java"
    Enable-Bucket -Bucket "nirsoft"
    scoop bucket add foosel https://github.com/foosel/scoop-bucket
    scoop bucket add foosel https: //github.com/foosel/scoop-bucket

    # UNIX Tools
    Write-Verbose -Message "Removing curl Alias..."
    @@ -414,18 +418,18 @@ Write-Verbose -Message "Removing curl Alias..."
    #>
    if (Get-Alias -Name curl -ErrorAction SilentlyContinue)
    {
    Remove-Item alias:curl
    Remove-Item alias: curl
    }
    if (!($Env:TERM))
    if (!($Env: TERM))
    {
    Write-Verbose -Message "Setting TERM User Environment Variable"
    [System.Environment]::SetEnvironmentVariable("TERM", "xterm-256color", "USER")
    }

    # Install Scoop Packages
    $Scoop = @(
    "scoop-tray",
    #"concfg", # https://github.com/lukesampson/concfg
    "scoop-tray",
    "curl",
    "busybox", # BusyBox es una herramienta que permite tener muchas utilidades Unix en un solo ejecutable, incluye una gran variedad de herramientas, como ls, cat, echo, grep, etc.
    "fzf", # Proporciona una interfaz interactiva para buscar y seleccionar archivos, directorios, historiales de comandos, etc. en el sistema de archivos. Es altamente personalizable y se integra fácilmente con otras herramientas de línea de comando.
    @@ -481,10 +485,18 @@ foreach ($item in $WinGet)

    # Seleccionar qué navegadores web quieres instalar
    $applicationsOpt =
    [PsCustomObject]@{ Name = "Google Chrome"; Id = "Google.Chrome" },
    [PsCustomObject]@{ Name = "Sidekick"; Id = "PushPlayLabs.Sidekick" },
    [PsCustomObject]@{ Name = "Mozilla.Firefox"; Id = "Mozilla.Firefox" },
    [PsCustomObject]@{ Name = "Opera"; Id = "Opera.Opera" }
    [PsCustomObject]@{
    Name = "Google Chrome"; Id = "Google.Chrome"
    },
    [PsCustomObject]@{
    Name = "Sidekick"; Id = "PushPlayLabs.Sidekick"
    },
    [PsCustomObject]@{
    Name = "Mozilla.Firefox"; Id = "Mozilla.Firefox"
    },
    [PsCustomObject]@{
    Name = "Opera"; Id = "Opera.Opera"
    }

    $selectedApplicationsOpt = $applicationsOpt | Select-Object -Property Name, Id |
    Out-GridView -Title "Selecciona con (Shift + clic) o (Ctrl + clic) una o más navegares web a instalar y pulsa (ENTER) para ejecutar:" -PassThru |
    @@ -500,17 +512,39 @@ foreach ($item in $WinGet)

    # Seleccionar qué aplicaciones opcionales a instalar
    $applicationsOpt =
    [PsCustomObject]@{ Name = "Obsidian"; Id = "Obsidian.Obsidian"; Description = "Aplicación de notas enfocada en conexiones, organización y estructuración de información. Permite tomar notas en formato de texto plano y crear vínculos entre ellas para construir una estructura de conocimiento personal." },
    [PsCustomObject]@{ Name = "HWMonitor"; Id = "CPUID.HWMonitor"; Description = "HWMonitor es útil para los usuarios que deseen monitorear el rendimiento de su sistema, detectar problemas de sobrecalentamiento y verificar el estado de la batería. También es útil para los profesionales de TI que deseen monitorear los servidores y equipos en una red." },
    [PsCustomObject]@{ Name = "BleachBit"; Id = "BleachBit.BleachBit"; Description = "BleachBit es una herramienta de limpieza de sistema. Te permite limpiar archivos temporales, cachés, historiales, cookies y otros datos no deseados de tu sistema para liberar espacio en disco y mejorar el rendimiento." },
    [PsCustomObject]@{ Name = "SumatraPDF"; Id = "SumatraPDF.SumatraPDF"; Description = "Lector de PDF gratuito y de código abierto para Windows. Ofrece una interfaz de usuario sencilla y una respuesta rápida, y es capaz de abrir y ver archivos PDF y otros formatos de libro electrónico, como ePub, MOBI, y XPS" },
    [PsCustomObject]@{ Name = "Spark"; Id = "Readdle.Spark"; Description = "Gestor de mail inteligente" },
    [PsCustomObject]@{ Name = "OBS Studio"; Id = "com.obsproject.Studio"; Description = "Grabadora de pantalla" },
    [PsCustomObject]@{ Name = "DBeaver"; Id = "dbeaver.dbeaver"; Description = "Herramienta para administradores de bases de datos y desarrolladores que permite conectarse y gestionar varios tipos de bases de datos." },
    [PsCustomObject]@{ Name = "DiskGenius"; Id = "Eassos.DiskGenius"; Description = "Software de gestión de disco. Ofrece funciones como la recuperación de archivos, la partición de disco, la copia de seguridad y la clonación de disco, la gestión de archivos y la comprobación de errores en el disco duro." },
    [PsCustomObject]@{ Name = "AutoHotkey"; Id = "Lexikos.AutoHotkey"; Description = "Permite crear scripts para realizar tareas repetitivas de manera rápida y sencilla, como mapear teclas, enviar texto, crear ventanas emergentes y mucho más." },
    [PsCustomObject]@{ Name = "RevoUninstaller"; Id = "RevoUninstaller.RevoUninstaller"; Description = "Es una herramienta muy útil para desinstalar programas que no se pueden desinstalar de forma normal, limpiar el registro y eliminar archivos y carpetas dejados en el sistema después de la desinstalación. Además, su interfaz es fácil de usar y permite desinstalar varios programas de forma masiva." },
    [PsCustomObject]@{ Name = "Starship"; Id = "Starship.Starship"; Description = "El objetivo de Starship es proporcionar una experiencia de línea de comando rápida, eficiente y vistosa para los usuarios." }
    [PsCustomObject]@{
    Name = "Obsidian"; Id = "Obsidian.Obsidian"; Description = "Aplicación de notas enfocada en conexiones, organización y estructuración de información. Permite tomar notas en formato de texto plano y crear vínculos entre ellas para construir una estructura de conocimiento personal."
    },
    [PsCustomObject]@{
    Name = "HWMonitor"; Id = "CPUID.HWMonitor"; Description = "HWMonitor es útil para los usuarios que deseen monitorear el rendimiento de su sistema, detectar problemas de sobrecalentamiento y verificar el estado de la batería. También es útil para los profesionales de TI que deseen monitorear los servidores y equipos en una red."
    },
    [PsCustomObject]@{
    Name = "BleachBit"; Id = "BleachBit.BleachBit"; Description = "BleachBit es una herramienta de limpieza de sistema. Te permite limpiar archivos temporales, cachés, historiales, cookies y otros datos no deseados de tu sistema para liberar espacio en disco y mejorar el rendimiento."
    },
    [PsCustomObject]@{
    Name = "SumatraPDF"; Id = "SumatraPDF.SumatraPDF"; Description = "Lector de PDF gratuito y de código abierto para Windows. Ofrece una interfaz de usuario sencilla y una respuesta rápida, y es capaz de abrir y ver archivos PDF y otros formatos de libro electrónico, como ePub, MOBI, y XPS"
    },
    [PsCustomObject]@{
    Name = "Spark"; Id = "Readdle.Spark"; Description = "Gestor de mail inteligente"
    },
    [PsCustomObject]@{
    Name = "OBS Studio"; Id = "com.obsproject.Studio"; Description = "Grabadora de pantalla"
    },
    [PsCustomObject]@{
    Name = "DBeaver"; Id = "dbeaver.dbeaver"; Description = "Herramienta para administradores de bases de datos y desarrolladores que permite conectarse y gestionar varios tipos de bases de datos."
    },
    [PsCustomObject]@{
    Name = "DiskGenius"; Id = "Eassos.DiskGenius"; Description = "Software de gestión de disco. Ofrece funciones como la recuperación de archivos, la partición de disco, la copia de seguridad y la clonación de disco, la gestión de archivos y la comprobación de errores en el disco duro."
    },
    [PsCustomObject]@{
    Name = "AutoHotkey"; Id = "Lexikos.AutoHotkey"; Description = "Permite crear scripts para realizar tareas repetitivas de manera rápida y sencilla, como mapear teclas, enviar texto, crear ventanas emergentes y mucho más."
    },
    [PsCustomObject]@{
    Name = "RevoUninstaller"; Id = "RevoUninstaller.RevoUninstaller"; Description = "Es una herramienta muy útil para desinstalar programas que no se pueden desinstalar de forma normal, limpiar el registro y eliminar archivos y carpetas dejados en el sistema después de la desinstalación. Además, su interfaz es fácil de usar y permite desinstalar varios programas de forma masiva."
    },
    [PsCustomObject]@{
    Name = "Starship"; Id = "Starship.Starship"; Description = "El objetivo de Starship es proporcionar una experiencia de línea de comando rápida, eficiente y vistosa para los usuarios."
    }

    $selectedApplicationsOpt = $applicationsOpt | Select-Object -Property Name, Description, Id |
    Out-GridView -Title "Selecciona con (Shift + clic) o (Ctrl + clic) una o más aplicaciones opcionales a instalar y pulsa (ENTER) para ejecutar:" -PassThru |
    @@ -569,9 +603,9 @@ if (!$PS7)
    Write-Verbose -Message "Installing PowerShell 7..."
    @'
    iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Quiet"
    '@ > $Env:Temp\ps7.ps1
    '@ > $Env: Temp\ps7.ps1
    Start-Process -FilePath "PowerShell" -ArgumentList "$Env:Temp\ps7.ps1" -Verb RunAs -Wait -WindowStyle Hidden
    Remove-Item -Path $Env:Temp\ps7.ps1 -Force
    Remove-Item -Path $Env: Temp\ps7.ps1 -Force
    }
    # Pin PowerShell 7 to Taskbar
    Write-Verbose -Message "Pin PowerShell 7 to Taskbar..."
  17. RubenZagon revised this gist Jan 31, 2023. 1 changed file with 12 additions and 16 deletions.
    28 changes: 12 additions & 16 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -192,6 +192,17 @@ function Continue-Installation-In-New-Window
    Exit
    }

    # Configure ExecutionPolicy to Unrestricted for CurrentUser Scope
    if ((Get-ExecutionPolicy -Scope CurrentUser) -notcontains "Unrestricted")
    {
    Write-Verbose -Message "Setting Execution Policy for Current User..."
    Start-Process -FilePath "PowerShell" -ArgumentList "Set-ExecutionPolicy", "-Scope", "CurrentUser", "-ExecutionPolicy", "Unrestricted", "-Force" -Verb RunAs -Wait
    # Write-Output "Restart/Re-Run script!!!"
    # Start-Sleep -Seconds 10
    Continue-Installation-In-New-Window
    Break
    }

    if (!(Get-Command -Name "choco" -CommandType Application -ErrorAction SilentlyContinue))
    {
    Write-Host "`n`n
    @@ -221,17 +232,6 @@ IMPORTANTE: Si en ocasiones sientes que 'esta trabado el script' pulsa un par de

    Write-Host "`nComenzamos la instalación ...`n"

    # Configure ExecutionPolicy to Unrestricted for CurrentUser Scope
    if ((Get-ExecutionPolicy -Scope CurrentUser) -notcontains "Unrestricted")
    {
    Write-Verbose -Message "Setting Execution Policy for Current User..."
    Start-Process -FilePath "PowerShell" -ArgumentList "Set-ExecutionPolicy", "-Scope", "CurrentUser", "-ExecutionPolicy", "Unrestricted", "-Force" -Verb RunAs -Wait
    # Write-Output "Restart/Re-Run script!!!"
    # Start-Sleep -Seconds 10
    Continue-Installation-In-New-Window
    Break
    }

    # Install Scoop, if not already installed
    #$scoopInstalled = Get-Command "scoop"
    if (!(Get-Command -Name "scoop" -CommandType Application -ErrorAction SilentlyContinue))
    @@ -665,11 +665,7 @@ Se puede lanzar esto: en cada parte que necesito reiniciar.
    Start-Process powershell -ArgumentList "-NoProfile", "-ExecutionPolicy", "Bypass", "-Command", "iex ((New-Object System.Net.WebClient).DownloadString(`'https://gist.githubusercontent.com/RubenZagon/1d4931f2547757c3d5ddce75f6b65378/raw/powershell-setup.ps1`'))" -Verb runAs
    ```
    #>
    #>
    #>
    #>
    #>
    #>

    <#
  18. RubenZagon revised this gist Jan 30, 2023. 1 changed file with 3 additions and 15 deletions.
    18 changes: 3 additions & 15 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -476,11 +476,7 @@ $WinGet = @(

    foreach ($item in $WinGet)
    {
    $appName = (Split-Path $item -Leaf).Split('.')[-1]
    if (!(Get-Package -Name "$appName"))
    {
    Install-WinGetApp -PackageID "$item"
    }
    Install-WinGetApp -PackageID "$item"
    }

    # Seleccionar qué navegadores web quieres instalar
    @@ -499,11 +495,7 @@ Write-Host "Navegadores web seleccionados para instalar: $selectedApplicationsOp
    $WinGet = @( $selectedApplicationsOpt )
    foreach ($item in $WinGet)
    {
    $appName = (Split-Path $item -Leaf).Split('.')[-1]
    if (!(Get-Package -Name "$appName"))
    {
    Install-WinGetApp -PackageID "$item"
    }
    Install-WinGetApp -PackageID "$item"
    }

    # Seleccionar qué aplicaciones opcionales a instalar
    @@ -529,11 +521,7 @@ Write-Host "Aplicaciones seleccionados para instalar: $selectedApplicationsOpt"
    $WinGet = @( $selectedApplicationsOpt )
    foreach ($item in $WinGet)
    {
    $appName = (Split-Path $item -Leaf).Split('.')[-1]
    if (!(Get-Package -Name "$appName"))
    {
    Install-WinGetApp -PackageID "$item"
    }
    Install-WinGetApp -PackageID "$item"
    }

    # Install Chocolatey Packages
  19. RubenZagon revised this gist Jan 30, 2023. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -477,7 +477,7 @@ $WinGet = @(
    foreach ($item in $WinGet)
    {
    $appName = (Split-Path $item -Leaf).Split('.')[-1]
    if (!(Get-Package -Name $appName))
    if (!(Get-Package -Name "$appName"))
    {
    Install-WinGetApp -PackageID "$item"
    }
    @@ -500,7 +500,7 @@ $WinGet = @( $selectedApplicationsOpt )
    foreach ($item in $WinGet)
    {
    $appName = (Split-Path $item -Leaf).Split('.')[-1]
    if (!(Get-Package -Name $appName))
    if (!(Get-Package -Name "$appName"))
    {
    Install-WinGetApp -PackageID "$item"
    }
    @@ -530,7 +530,7 @@ $WinGet = @( $selectedApplicationsOpt )
    foreach ($item in $WinGet)
    {
    $appName = (Split-Path $item -Leaf).Split('.')[-1]
    if (!(Get-Package -Name $appName))
    if (!(Get-Package -Name "$appName"))
    {
    Install-WinGetApp -PackageID "$item"
    }
  20. RubenZagon revised this gist Jan 30, 2023. 1 changed file with 7 additions and 4 deletions.
    11 changes: 7 additions & 4 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -454,7 +454,7 @@ Sysinternals es un recurso valioso para los administradores de sistemas y desarr
    )
    foreach ($item in $Scoop)
    {
    if (!(scoop list | Select-String "$item"))
    if (!(scoop list | Select-String "$item" -Quiet))
    {
    Install-ScoopApp -Package "$item"
    }
    @@ -476,7 +476,8 @@ $WinGet = @(

    foreach ($item in $WinGet)
    {
    if (!(Get-Package -Name "$item"))
    $appName = (Split-Path $item -Leaf).Split('.')[-1]
    if (!(Get-Package -Name $appName))
    {
    Install-WinGetApp -PackageID "$item"
    }
    @@ -498,7 +499,8 @@ Write-Host "Navegadores web seleccionados para instalar: $selectedApplicationsOp
    $WinGet = @( $selectedApplicationsOpt )
    foreach ($item in $WinGet)
    {
    if (!(Get-Package -Name "$item"))
    $appName = (Split-Path $item -Leaf).Split('.')[-1]
    if (!(Get-Package -Name $appName))
    {
    Install-WinGetApp -PackageID "$item"
    }
    @@ -527,7 +529,8 @@ Write-Host "Aplicaciones seleccionados para instalar: $selectedApplicationsOpt"
    $WinGet = @( $selectedApplicationsOpt )
    foreach ($item in $WinGet)
    {
    if (!(Get-Package -Name "$item"))
    $appName = (Split-Path $item -Leaf).Split('.')[-1]
    if (!(Get-Package -Name $appName))
    {
    Install-WinGetApp -PackageID "$item"
    }
  21. RubenZagon revised this gist Jan 30, 2023. 1 changed file with 96 additions and 79 deletions.
    175 changes: 96 additions & 79 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -11,7 +11,7 @@ Creation inspired by the script created by Mike Pruett
    **NOTE** Will configure the Execution Policy for the "CurrentUser" to Unrestricted.
    Author: Rubén Zamora
    Date: January 26th, 2023
    Last Updated on January 27th, 2023
    Last Updated on January 30th, 2023
    #>

    $VerbosePreference = "Continue"
    @@ -185,7 +185,16 @@ function Enable-Bucket
    }
    }

    Write-Host "`n`n
    function Continue-Installation-In-New-Window
    {
    Write-Output "Continuamos la instalación en otra ventana para cargar las nuevas configuraciones..."
    Start-Process powershell -ArgumentList "-NoProfile", "-ExecutionPolicy", "Bypass", "-Command", "iex ((New-Object System.Net.WebClient).DownloadString(`'https://gist.githubusercontent.com/RubenZagon/1d4931f2547757c3d5ddce75f6b65378/raw/powershell-setup.ps1`'))" -Verb runAs
    Exit
    }

    if (!(Get-Command -Name "choco" -CommandType Application -ErrorAction SilentlyContinue))
    {
    Write-Host "`n`n
    Vamos a comenzar la instalación auto-mágica de una serie de configuraciones para que sea más fácil programar
    en Windows, para ello vamos a instalar mínimo las siguientes aplicaciones:
    - Microsoft.PowerToys: Nos da un sinfin de herramientas útiles
    @@ -204,61 +213,54 @@ M
    IMPORTANTE: Si en ocasiones sientes que 'esta trabado el script' pulsa un par de veces (ENTER) para seguir teniendo feedback del proceso
    `n"
    if ($( Read-Host -Prompt "Lo has entendido bien? (y/n)?" ) -eq "n")
    {
    Write-Host "`n`n Entonces es mejor que hagas la instalación de las aplicaciones de manera manual, vamos a salir de este modo :)"
    exit
    }
    if ($( Read-Host -Prompt "Lo has entendido bien? (y/n)?" ) -eq "n")
    {
    Write-Host "`n`nEntonces es mejor que hagas la instalación de las aplicaciones de manera manual, vamos a salir de este modo :)"
    exit
    }

    Write-Host "`nComenzamos la instalación ...`n"
    Write-Host "`nComenzamos la instalación ...`n"

    # Configure ExecutionPolicy to Unrestricted for CurrentUser Scope
    if ((Get-ExecutionPolicy -Scope CurrentUser) -notcontains "Unrestricted")
    {
    Write-Verbose -Message "Setting Execution Policy for Current User..."
    Start-Process -FilePath "PowerShell" -ArgumentList "Set-ExecutionPolicy", "-Scope", "CurrentUser", "-ExecutionPolicy", "Unrestricted", "-Force" -Verb RunAs -Wait
    Write-Output "Restart/Re-Run script!!!"
    Start-Sleep -Seconds 10
    Break
    }
    # Configure ExecutionPolicy to Unrestricted for CurrentUser Scope
    if ((Get-ExecutionPolicy -Scope CurrentUser) -notcontains "Unrestricted")
    {
    Write-Verbose -Message "Setting Execution Policy for Current User..."
    Start-Process -FilePath "PowerShell" -ArgumentList "Set-ExecutionPolicy", "-Scope", "CurrentUser", "-ExecutionPolicy", "Unrestricted", "-Force" -Verb RunAs -Wait
    # Write-Output "Restart/Re-Run script!!!"
    # Start-Sleep -Seconds 10
    Continue-Installation-In-New-Window
    Break
    }

    # Install Scoop, if not already installed
    #$scoopInstalled = Get-Command "scoop"
    if (!(Get-Command -Name "scoop" -CommandType Application -ErrorAction SilentlyContinue))
    {
    Write-Verbose -Message "Installing Scoop..."
    iex "& {$( irm get.scoop.sh )} -RunAsAdmin"
    }
    else
    {
    Write-Verbose -Message "Scoop already installed"
    }
    # Install Scoop, if not already installed
    #$scoopInstalled = Get-Command "scoop"
    if (!(Get-Command -Name "scoop" -CommandType Application -ErrorAction SilentlyContinue))
    {
    Write-Verbose -Message "Installing Scoop..."
    iex "& {$( irm get.scoop.sh )} -RunAsAdmin"
    }


    # Install Chocolatey, if not already installed
    #$chocoInstalled = Get-Command -Name "choco" -CommandType Application -ErrorAction SilentlyContinue | Out-Null
    if (!(Get-Command -Name "choco" -CommandType Application -ErrorAction SilentlyContinue))
    {
    Write-Verbose -Message "Installing Chocolatey..."
    @'
    # Install Chocolatey, if not already installed
    #$chocoInstalled = Get-Command -Name "choco" -CommandType Application -ErrorAction SilentlyContinue | Out-Null
    if (!(Get-Command -Name "choco" -CommandType Application -ErrorAction SilentlyContinue))
    {
    Write-Verbose -Message "Installing Chocolatey..."
    @'
    [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
    iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
    '@ > $Env:Temp\choco.ps1
    Start-Process -FilePath "PowerShell" -ArgumentList "$Env:Temp\choco.ps1" -Verb RunAs -Wait
    Remove-Item -Path $Env:Temp\choco.ps1 -Force
    }
    else
    {
    Write-Verbose -Message "Chocolatey already installed"
    }
    Start-Process -FilePath "PowerShell" -ArgumentList "$Env:Temp\choco.ps1" -Verb RunAs -Wait
    Remove-Item -Path $Env:Temp\choco.ps1 -Force
    }

    # Install WinGet, if not already installed
    # From crutkas's gist - https://gist.github.com/crutkas/6c2096eae387e544bd05cde246f23901
    #$hasPackageManager = Get-AppPackage -name "Microsoft.DesktopAppInstaller"
    if (!(Get-AppPackage -name "Microsoft.DesktopAppInstaller"))
    {
    Write-Verbose -Message "Installing WinGet..."
    @'
    # Install WinGet, if not already installed
    # From crutkas's gist - https://gist.github.com/crutkas/6c2096eae387e544bd05cde246f23901
    #$hasPackageManager = Get-AppPackage -name "Microsoft.DesktopAppInstaller"
    if (!(Get-AppPackage -name "Microsoft.DesktopAppInstaller"))
    {
    Write-Verbose -Message "Installing WinGet..."
    @'
    # Set URL and Enable TLSv12
    $releases_url = "https://api.github.com/repos/microsoft/winget-cli/releases/latest"
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    @@ -276,28 +278,29 @@ $latestRelease = $releases.assets | Where { $_.browser_download_url.EndsWith('ms
    # Install Microsoft.DesktopAppInstaller Package
    Add-AppxPackage -Path $latestRelease.browser_download_url
    '@ > $Env:Temp\winget.ps1
    Start-Process -FilePath "PowerShell" -ArgumentList "$Env:Temp\winget.ps1" -Verb RunAs -Wait
    Remove-Item -Path $Env:Temp\winget.ps1 -Force
    }
    else
    {
    Write-Verbose -Message "WinGet already installed"
    }
    Start-Process -FilePath "PowerShell" -ArgumentList "$Env:Temp\winget.ps1" -Verb RunAs -Wait
    Remove-Item -Path $Env:Temp\winget.ps1 -Force
    }

    # Only install OpenSSH Package, if not on Windows 10
    if ([Environment]::OSVersion.Version.Major -lt 10)
    {
    Install-ScoopApp -Package "openssh"
    }
    # Only install OpenSSH Package, if not on Windows 10
    if ([Environment]::OSVersion.Version.Major -lt 10)
    {
    Install-ScoopApp -Package "openssh"
    }

    # Install OpenSSH.Client on Windows 10+
    @'
    # Install OpenSSH.Client on Windows 10+
    @'
    if ((Get-WindowsCapability -Online -Name OpenSSH.Client*).State -ne "Installed") {
    Add-WindowsCapability -Online -Name OpenSSH.Client*
    }
    '@ > "${Env:Temp}\openssh.ps1"
    Start-Process -FilePath "PowerShell" -ArgumentList "${Env:Temp}\openssh.ps1" -Verb RunAs -Wait -WindowStyle Hidden
    Remove-Item -Path "${Env:Temp}\openssh.ps1" -Force
    Start-Process -FilePath "PowerShell" -ArgumentList "${Env:Temp}\openssh.ps1" -Verb RunAs -Wait -WindowStyle Hidden
    Remove-Item -Path "${Env:Temp}\openssh.ps1" -Force


    Continue-Installation-In-New-Window
    Exit
    }

    # Configure git
    Write-Verbose -Message "Installing Git..."
    @@ -451,7 +454,10 @@ Sysinternals es un recurso valioso para los administradores de sistemas y desarr
    )
    foreach ($item in $Scoop)
    {
    Install-ScoopApp -Package "$item"
    if (!(scoop list | Select-String "$item"))
    {
    Install-ScoopApp -Package "$item"
    }
    }

    # Install WinGet Packages
    @@ -470,7 +476,10 @@ $WinGet = @(

    foreach ($item in $WinGet)
    {
    Install-WinGetApp -PackageID "$item"
    if (!(Get-Package -Name "$item"))
    {
    Install-WinGetApp -PackageID "$item"
    }
    }

    # Seleccionar qué navegadores web quieres instalar
    @@ -489,7 +498,10 @@ Write-Host "Navegadores web seleccionados para instalar: $selectedApplicationsOp
    $WinGet = @( $selectedApplicationsOpt )
    foreach ($item in $WinGet)
    {
    Install-WinGetApp -PackageID "$item"
    if (!(Get-Package -Name "$item"))
    {
    Install-WinGetApp -PackageID "$item"
    }
    }

    # Seleccionar qué aplicaciones opcionales a instalar
    @@ -515,7 +527,10 @@ Write-Host "Aplicaciones seleccionados para instalar: $selectedApplicationsOpt"
    $WinGet = @( $selectedApplicationsOpt )
    foreach ($item in $WinGet)
    {
    Install-WinGetApp -PackageID "$item"
    if (!(Get-Package -Name "$item"))
    {
    Install-WinGetApp -PackageID "$item"
    }
    }

    # Install Chocolatey Packages
    @@ -602,13 +617,15 @@ if ($( Read-Host -Prompt "Deseas continuar (y/n)?" ) -eq "y")
    Start-Sleep -Seconds 5
    if ((wsl --list --verbose))
    {
    # Aqui tiene que verificar que se ha instalado la distribución linux primero... antes de continuar
    Write-Verbose -Message "Instalando Docker Desktop..."
    winget install --exact --id Docker.DockerDesktop --accept-source-agreements --accept-package-agreements
    Write-Verbose -Message "Reiniciando equipo..."
    Start-Sleep -Seconds 5
    Restart-Computer -Force
    } else {
    # Aqui tiene que verificar que se ha instalado la distribución linux primero... antes de continuar
    Write-Verbose -Message "Instalando Docker Desktop..."
    winget install --exact --id Docker.DockerDesktop --accept-source-agreements --accept-package-agreements
    Write-Verbose -Message "Reiniciando equipo..."
    Start-Sleep -Seconds 5
    Restart-Computer -Force
    }
    else
    {
    Write-Verbose -Message "Se necesita instalar una distribución de Linux para instalar Docker, reinicia el script tras hacer esto."
    }
    }
    @@ -658,10 +675,10 @@ Se puede lanzar esto: en cada parte que necesito reiniciar.
    ```
    #>
    #>
    #>
    #>
    #>
    #>
    #>
    #>
    #>
    #>

    <#
  22. RubenZagon revised this gist Jan 30, 2023. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -654,7 +654,7 @@ Que tras hacer las instalaciones de WinGet, no se abran las aplicaciones autom
    Se puede lanzar esto: en cada parte que necesito reiniciar.
    ```
    Start-Process PowerShell -Verb RunAs -ArgumentList '-NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://gist.githubusercontent.com/RubenZagon/1d4931f2547757c3d5ddce75f6b65378/raw/powershell-setup.ps1'))"'
    Start-Process powershell -ArgumentList "-NoProfile", "-ExecutionPolicy", "Bypass", "-Command", "iex ((New-Object System.Net.WebClient).DownloadString(`'https://gist.githubusercontent.com/RubenZagon/1d4931f2547757c3d5ddce75f6b65378/raw/powershell-setup.ps1`'))" -Verb runAs
    ```
    #>
  23. RubenZagon revised this gist Jan 30, 2023. 1 changed file with 17 additions and 3 deletions.
    20 changes: 17 additions & 3 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -644,10 +644,24 @@ Preparar preguntar por qu
    -------
    Parece que primero tengo que instalar Scoop de manera normal, para evitar lanzarlo en modo administrador, por problemas,
    una vez verifique que est´´ instalado el scoop saltarse el menú inicial
    #>
    #>
    #>
    -----
    Que tras hacer las instalaciones de WinGet, no se abran las aplicaciones automáticamente
    Y hacer también que la instalación abra una nueva ventana y continue con la instalación, para evitar tener que estar reseteando y eso..
    Se puede lanzar esto: en cada parte que necesito reiniciar.
    ```
    Start-Process PowerShell -Verb RunAs -ArgumentList '-NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://gist.githubusercontent.com/RubenZagon/1d4931f2547757c3d5ddce75f6b65378/raw/powershell-setup.ps1'))"'
    ```
    #>
    #>
    #>
    #>
    #>
    #>

    <#
  24. RubenZagon revised this gist Jan 30, 2023. 1 changed file with 10 additions and 1 deletion.
    11 changes: 10 additions & 1 deletion powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -596,12 +596,21 @@ Para ello debemos instalar una distribuci
    if ($( Read-Host -Prompt "Deseas continuar (y/n)?" ) -eq "y")
    {
    Write-Verbose -Message "Instalando Ubuntu 20.04..."
    wsl --install Ubuntu-20.04
    wsl --set-default-version 2
    wsl --update
    wsl --install -d Ubuntu-20.04
    Start-Sleep -Seconds 5
    if ((wsl --list --verbose))
    {
    # Aqui tiene que verificar que se ha instalado la distribución linux primero... antes de continuar
    Write-Verbose -Message "Instalando Docker Desktop..."
    winget install --exact --id Docker.DockerDesktop --accept-source-agreements --accept-package-agreements
    Write-Verbose -Message "Reiniciando equipo..."
    Start-Sleep -Seconds 5
    Restart-Computer -Force
    } else {
    Write-Verbose -Message "Se necesita instalar una distribución de Linux para instalar Docker, reinicia el script tras hacer esto."
    }
    }


  25. RubenZagon revised this gist Jan 30, 2023. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -227,7 +227,7 @@ if ((Get-ExecutionPolicy -Scope CurrentUser) -notcontains "Unrestricted")
    if (!(Get-Command -Name "scoop" -CommandType Application -ErrorAction SilentlyContinue))
    {
    Write-Verbose -Message "Installing Scoop..."
    iex ((New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh'))
    iex "& {$( irm get.scoop.sh )} -RunAsAdmin"
    }
    else
    {
    @@ -637,8 +637,8 @@ Parece que primero tengo que instalar Scoop de manera normal, para evitar lanzar
    una vez verifique que est´´ instalado el scoop saltarse el menú inicial
    #>

    #>
    #>
    #>
    #>
    #>

    <#
  26. RubenZagon revised this gist Jan 30, 2023. 1 changed file with 7 additions and 13 deletions.
    20 changes: 7 additions & 13 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -304,18 +304,6 @@ Write-Verbose -Message "Installing Git..."
    if (Get-Command -Name "choco" -CommandType Application -ErrorAction SilentlyContinue)
    {
    choco install git -y
    }
    else
    {
    Write-Verbose -Message "Chocolatey not are installed, please try to re-run the script or solve the problem installing manually..."
    Exit
    }
    #Install-WinGetApp -PackageID "Git.Git"
    #Start-Sleep -Seconds 5
    #refreshenv ## Puede que no funcione el refresh y tengamos que volver a ejecutar el script desde una nueva ventana
    #Start-Sleep -Seconds 5
    if (Get-Command -Name "git" -CommandType Application -ErrorAction SilentlyContinue)
    {
    # Make `refreshenv` available right away, by defining the $env:ChocolateyInstall
    # variable and importing the Chocolatey profile module.
    # Note: Using `. $PROFILE` instead *may* work, but isn't guaranteed to.
    @@ -331,7 +319,7 @@ if (Get-Command -Name "git" -CommandType Application -ErrorAction SilentlyContin
    }
    else
    {
    Write-Verbose -Message "Git not are installed, please try to re-run the script or solve the problem installing manually..."
    Write-Verbose -Message "Chocolatey not are installed, please try to re-run the script or solve the problem installing manually..."
    Exit
    }

    @@ -644,7 +632,13 @@ TODO:
    Preparar instalación mínima, recomendada
    Preparar preguntar por qué navegador web quieres instalar (multiple-opciontes)
    -------
    Parece que primero tengo que instalar Scoop de manera normal, para evitar lanzarlo en modo administrador, por problemas,
    una vez verifique que est´´ instalado el scoop saltarse el menú inicial
    #>

    #>
    #>
    #>

    <#
  27. RubenZagon revised this gist Jan 30, 2023. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -190,6 +190,7 @@ Vamos a comenzar la instalaci
    en Windows, para ello vamos a instalar mínimo las siguientes aplicaciones:
    - Microsoft.PowerToys: Nos da un sinfin de herramientas útiles
    - PuTTY:
    - Git:
    - WinRAR: Para extraer paquetes .rar
    - Slack: Comunicación por chat
    - Zoom: Para hacer videollamadas
    @@ -510,6 +511,7 @@ $applicationsOpt =
    [PsCustomObject]@{ Name = "BleachBit"; Id = "BleachBit.BleachBit"; Description = "BleachBit es una herramienta de limpieza de sistema. Te permite limpiar archivos temporales, cachés, historiales, cookies y otros datos no deseados de tu sistema para liberar espacio en disco y mejorar el rendimiento." },
    [PsCustomObject]@{ Name = "SumatraPDF"; Id = "SumatraPDF.SumatraPDF"; Description = "Lector de PDF gratuito y de código abierto para Windows. Ofrece una interfaz de usuario sencilla y una respuesta rápida, y es capaz de abrir y ver archivos PDF y otros formatos de libro electrónico, como ePub, MOBI, y XPS" },
    [PsCustomObject]@{ Name = "Spark"; Id = "Readdle.Spark"; Description = "Gestor de mail inteligente" },
    [PsCustomObject]@{ Name = "OBS Studio"; Id = "com.obsproject.Studio"; Description = "Grabadora de pantalla" },
    [PsCustomObject]@{ Name = "DBeaver"; Id = "dbeaver.dbeaver"; Description = "Herramienta para administradores de bases de datos y desarrolladores que permite conectarse y gestionar varios tipos de bases de datos." },
    [PsCustomObject]@{ Name = "DiskGenius"; Id = "Eassos.DiskGenius"; Description = "Software de gestión de disco. Ofrece funciones como la recuperación de archivos, la partición de disco, la copia de seguridad y la clonación de disco, la gestión de archivos y la comprobación de errores en el disco duro." },
    [PsCustomObject]@{ Name = "AutoHotkey"; Id = "Lexikos.AutoHotkey"; Description = "Permite crear scripts para realizar tareas repetitivas de manera rápida y sencilla, como mapear teclas, enviar texto, crear ventanas emergentes y mucho más." },
  28. RubenZagon revised this gist Jan 30, 2023. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -200,6 +200,8 @@ en Windows, para ello vamos a instalar m
    - chrisant996.Clink: Un add-on para la consola de Windows que mejora la funcionalidad y la experiencia de usuario al agregar características como el autocompletado y la compatibilidad con la línea de comandos Unix.
    `n
    Más adelante se preguntará por qué navegadores webs quieres instalar y aplicaciones opcionales.
    IMPORTANTE: Si en ocasiones sientes que 'esta trabado el script' pulsa un par de veces (ENTER) para seguir teniendo feedback del proceso
    `n"
    if ($( Read-Host -Prompt "Lo has entendido bien? (y/n)?" ) -eq "n")
    {
  29. RubenZagon revised this gist Jan 30, 2023. 1 changed file with 24 additions and 0 deletions.
    24 changes: 24 additions & 0 deletions powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -185,6 +185,30 @@ function Enable-Bucket
    }
    }

    Write-Host "`n`n
    Vamos a comenzar la instalación auto-mágica de una serie de configuraciones para que sea más fácil programar
    en Windows, para ello vamos a instalar mínimo las siguientes aplicaciones:
    - Microsoft.PowerToys: Nos da un sinfin de herramientas útiles
    - PuTTY:
    - WinRAR: Para extraer paquetes .rar
    - Slack: Comunicación por chat
    - Zoom: Para hacer videollamadas
    - JetBrains -Toolbox: Gestor para instalar IDEs de JetBrains
    - Bitwarden: Gestor de contraseñas
    - Malwarebytes: Antivirus
    - Greenshot: Para hacer capturas de pantallas, con más utilidades
    - chrisant996.Clink: Un add-on para la consola de Windows que mejora la funcionalidad y la experiencia de usuario al agregar características como el autocompletado y la compatibilidad con la línea de comandos Unix.
    `n
    Más adelante se preguntará por qué navegadores webs quieres instalar y aplicaciones opcionales.
    `n"
    if ($( Read-Host -Prompt "Lo has entendido bien? (y/n)?" ) -eq "n")
    {
    Write-Host "`n`n Entonces es mejor que hagas la instalación de las aplicaciones de manera manual, vamos a salir de este modo :)"
    exit
    }

    Write-Host "`nComenzamos la instalación ...`n"

    # Configure ExecutionPolicy to Unrestricted for CurrentUser Scope
    if ((Get-ExecutionPolicy -Scope CurrentUser) -notcontains "Unrestricted")
    {
  30. RubenZagon revised this gist Jan 30, 2023. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion powershell-setup.ps1
    Original file line number Diff line number Diff line change
    @@ -490,7 +490,7 @@ $applicationsOpt =
    [PsCustomObject]@{ Name = "RevoUninstaller"; Id = "RevoUninstaller.RevoUninstaller"; Description = "Es una herramienta muy útil para desinstalar programas que no se pueden desinstalar de forma normal, limpiar el registro y eliminar archivos y carpetas dejados en el sistema después de la desinstalación. Además, su interfaz es fácil de usar y permite desinstalar varios programas de forma masiva." },
    [PsCustomObject]@{ Name = "Starship"; Id = "Starship.Starship"; Description = "El objetivo de Starship es proporcionar una experiencia de línea de comando rápida, eficiente y vistosa para los usuarios." }

    $selectedApplicationsOpt = $applicationsOpt | Select-Object -Property Name, Id |
    $selectedApplicationsOpt = $applicationsOpt | Select-Object -Property Name, Description, Id |
    Out-GridView -Title "Selecciona con (Shift + clic) o (Ctrl + clic) una o más aplicaciones opcionales a instalar y pulsa (ENTER) para ejecutar:" -PassThru |
    Select-Object -ExpandProperty Id