Windows – Essential Tools for Configuring Windows 11 for FIRST Robotics Competition (FRC)

| | | |

First thing to note is that everyone has their own “tricks of the trade” way of setting up a computer in general or setting up a computer for FIRST Robotics Competition (FRC).

This is only one of many ways to get a computer setup and you are free to use it. If you improve upon it please feel free to let me know.

Most of the scripts will be on this page as well as GitHub, as time goes on it is my intent to keep both current but GitHub should always be the most current.

Software Tools Needed

  1. Rufus – https://rufus.ie/en/
  2. Balena Etcher – https://etcher.balena.io
  3. Win11Debloat – https://github.com/Raphire/Win11Debloat (OPTIONAL but recommended)

Hardware Needed

  1. 2 USB Thumb Drives (At least 16GB is recommended but typically 8GB will work).
  2. MicroSD card reader
    • Some computers have a SD card reader builtin
  3. Tweezers (OPTIONAL)

Initial Setup

First you need to look at the computer that you have selected to use. If it is brand new you can likely skip to the next step but still a good idea to go through everything but the backup process.

Get Windows Product Key

Look on the physical sides of the laptop/desktop for a Windows Key sticker, it should look something like the image below. Depending on the version of Windows you have the sticker could look very different.

Use PowerShell To Get The Windows Product Key

If you can not find a sticker with a product key you can run the PowerShell code that is at https://www.kittell.net/code/powershell-windows-product-key/

  1. Start Menu -> PowerShell ISE (Run as administrator)
  2. It should open with a new “UntitledX.ps1” tab (example “Untitled1.ps1”)
  3. Copy the code from the above URL and paste it in the “UntitledX.ps1” tab and look for the button that looks like a green right arrow and press that button to run the script.
  4. When the script finishes (should be really quick) you should have some text on the bottom screen that lists out a ProductKey. Make sure you physically write down this key and then verify each letter and number at least once.

Backup Files

First if this is a new computer you can skip this step.

There isn’t a hard fast rule typically for this process as people tend to put files everywhere. Depending on how long the computer has been in use you may need a larger thumb drive or external hard drive.

The usual safe bet is to grab all files and folders/directories from c:\users\ and copy them to the thumb drive or external hard drive. This should account for most of the important files but often will get you more than you need. This is something you can always go through later if you don’t truly know what is important. Often I will look at the Downloads directory and try to decide what can be redownloaded instead of copying files that likely can be redownloaded.

Windows Install – Fresh Install Using ISO

Rufus

  1. Download an official latest version of Windows from Microsoft.
    • The main URL is https://www.microsoft.com/en-us/software-download/windows11
    • Scroll down to where you can download the Disk Image (ISO)
    • Often you will only have one option but mainly you want the x64 device version
    • Select the language that you need and then click on the “Confirm” button
    • Click on the “64-bit Download” button and it should start downloading.
  2. Install Rufus if you have not already
  3. Open Rufus
  4. First question you will receive is if you want to check for updates online, you can safely click on the “No” button
  5. Click on the “Select” button and navigate to and select the ISO of Windows that you downloaded
  6. Click the “Start” button, you will see a list of options
    • “Remove requirement for 4GB+ RAM, Secure Boot and TPM 2.0” – Check this box
    • “Remove requirement for an online Microsoft account” – Check this box
    • “Create a local account with username:” – Type admin in the text box
    • “Set regional options to the same values as this user’s” – OPTIONAL but suggested to check the box.
    • “Disable data collection (Skip privacy questions)” – Check this box
    • “Disable BitLocker automatic device encryption” – OPTIONAL, If you are only using this computer for FRC check the checkbox as it can help later. IF you are using this computer for more than FRC it would be good to not check this checkbox.
    • “Use ‘Windows CA 2023’ signed boot loaders (requires a compatible target PC)” – This can remain unchecked as some computers may not properly work with this option.
  7. Once you have clicked the options you need to click, click the “OK” button to continue.
  8. You will receive a warning “WARNING: ALL DATA ON DEVICE ‘<device name>’ WILL BE DESTROYED. To continue with this operation, click OK. To quit click CANCEL”
    • IMPORTANT: If you are using a new thumb drive or have nothing on the drive you care about, click the “OK” button. If you are unsure of what is on the drive it would be best to first check what is on the drive before continuing.
  9. As the process goes through you will get a progress on the progress bar, when done you can safely close Rufus and you are ready to use the drive.

Windows Install

  1. Confirm the “Language to install” and “Time and currency format”, then click the “Next” button
  2. Confirm the keyboard settings and click the “Next” button
  3. Select “Install Windows 11”, and click on the checkbox for “I agree everything will be deleted including files, apps, and settings”, then click on he “Next” button
  4. Read the “Applicable notices and license terms” and click on the “Accept” button
  5. Depending on your computer setup you may see a screen with multiple partitions. For each partition for disk 0, click on the partition and then click on the “Delete Partition” link until you only have one listing of “Disk 0 Unallocated Space” and then click the “Next” button.

  6. “Ready to install”, on this screen click click the “Install” button when ready.
  7. This next step depending on the computer may take a while to install Windows.
  8. Once the install is finished it should log you into the configured user.
  9. Press and hold the Windows key and then press the L key to lock Windows
  10. When you log back in it will require a password set/reset, it is best to set it to a memorable password for your team. Example: team number twice.
    • “The user’s password must be changed before signing in”, click the “OK” button
    • Set the password and confirm the password, then click the right arrow or press the Enter key
    • “Your password has been changed”, Click the “OK” button

Windows Install – Reset Computer Option

  1. Before you start make sure the computer is plugged in for power and internet.
  2. NOTE: This option will require a Microsoft account during the reinstallation steps in order to continue.
  3. Go to the Start Menu and search for or type “Settings”
    • Click on “System”
    • Click on “Recovery”
    • Click on “Reset PC”
    • Click on “Remove everything”
    • Click on “Local reinstall”
    • Click on “Next”
    • Click on “Reset”

Win11Debloat

Updated option is a quick one-line script to download the graphical user interface (GUI) option. Open Terminal or PowerShell and paste the code block below then press enter.

PowerShell
& ([scriptblock]::Create((irm "https://debloat.raphi.re/")))

The first view you should receive is similar to the below image.

  • On this first screen, click on the checkbox for “Only show installed apps” to reduce the list to only what is on the computer.
  • From the filtered list, click the “Select Default Apps” button to check the boxes for the main apps that should/could be removed. Select any additional apps that you would like to remove.
  • Suggested apps to keep/retain:
    • Calculator
    • Camera
    • Microsoft Edge (unless you are using a different browser)
    • Microsoft Store (just in case you need to add something later)
    • Notepad
    • OPTIONAL – OneDrive (Remember do not put your robot code in OneDrive)
    • Paint
    • Photos
    • Snipping Tool
    • Windows Terminal
  • Once you have your selected apps to remove, click on the blue “Next ->” button

In this view are many options, in general it’s best to click the “Select Default Settings” button and then modify from there.

  • Privacy & Suggested Content
    • Safe to select all the checkboxes
  • System
    • Suggested to select all the checkboxes
  • Start Menu
    • Dropdown menu, select “Remove for all users”
    • Suggested to select all the checkboxes
  • AI
    • Suggested to select all the checkboxes
  • Appearance
    • Suggested to select all the checkboxes
  • Taskbar
    • “Left taskbar alignment”
    • Dropdown “Taskbar search style” menu, set “Hide”
    • Select “Hide ‘Task View’ button on the taskbar”
    • Select “Disable widgets on the taskbar & lock screen”
    • OPTIONAL – Select “Show ‘End Task’ option in taskbar context menu”
    • OPTIONAL – Leave unchecked “Enable ‘Last Active Click’ behavior for taskbar app”
    • Dropdown “Show taskbar apps on” menu, set “Main taskbar and taskbar where window is open”
    • Dropdown “Combine taskbar buttons on the main display” menu, set “When taskbar is full”
    • Dropdown “Combine taskbar buttons on secondary displays” menu, “When taskbar is full”
  • File Explorer
    • OPTIONAL – Dropdown “Open File Explorer to” menu, set “Home”
    • OPTIONAL – Select all checkboxes except “Show hidden files, folders and drives”
  • Gaming
    • Suggested to select all the checkboxes
  • Other
    • If you have the Brave Browser, select the “Disable bloat in Brave browser (AI, Crypto, etc.)”

In most cases if you are only running one user on the laptop (ideal) then leave the option for “Apply Changes To” dropdown menu to “Current User”

Scroll down and OPTIONALLY uncheck “Create system restore point” then click “Apply Changes”

Optionally you can download the Zip file from the GitHub link or open PowerShell/Terminal as admin and run the following code. If you run the following code, you can skip 1, 2, and 3 below.

NOTE: When it says OPTIONAL this step is not necessary to follow the guidance but is suggested. If you want, you can answer No (n) for the yes or no questions or a different number depending on your need.

  1. Extract the zip file
  2. Open the directory, find and double click on the “Run” file
  3. On the User Account Control prompt click on the “Yes” button
  4. Type 2, then press the Enter button
  5. Type 2, then press the Enter button
  6. Type y, then press the Enter button for “Disable Game Bar integration…”
  7. Type y, then press the Enter button for “Disable telemetry….”
  8. Type y, then press the Enter button for “Disable tips, tricks, suggestions…..”
  9. Type y, then press the Enter button for “Disable & remove Bing web….”
  10. Type 2, then press the Enter button for “Disable Microsoft Copilot….”
  11. Type y, then press the Enter button for “Disable Windows Spotlight…”
  12. OPTIONAL – Type y, then press the Enter button for “Enable dark mode….”
  13. Type y, then press the Enter button for “Disable transparency, animations and ….”
  14. Type y, then press the Enter button for “Restore the old Windows 10….”
  15. Type y, then press the Enter button for “Turn off Enhance Pointer Precision….”
  16. Type y, then press the Enter button for “Disable the Sticky Keys…”
  17. Type y, then press the Enter button for “Disable Fast Start-up….”
  18. Type n, then press the Enter button for “Disable network connectivity during Modern Standby….”
  19. Type y, then press the Enter button for “Do you want to disable any context menu options”
  20. Type y, then press the Enter button for “Hide the ‘Include in library’ option….”
  21. Type y, then press the Enter button for “Hide the ‘Give access to’ option…”
  22. Type y, then press the Enter button for “Hide the ‘Share’ option…”
  23. Type y, then press the Enter button for “Do you want to make any changes to the start menu?”
  24. Type 2, then press the Enter button
  25. Type y, then press the Enter button for “Disable the Phone Link….”
  26. Type y, then press the Enter button for “Do you want to make any changes to the taskbar and related services?”
  27. Type y, then press the Enter button for “Align taskbar buttons to the left side”
  28. Type 2, then press the Enter button
  29. Type 2, then press the Enter button
  30. Type 1, then press the Enter button for “Hide search icon from the taskbar”
  31. Type y, then press the Enter button for “Hide the taskview button….”
  32. Type y, then press the Enter button for “Disable the widgets service….”
  33. OPTIONAL – Type y, then press the Enter button for “Enable the ‘End Task’ option….”
  34. OPTIONAL – Type n, then press the Enter button for “Enable the ‘Last Active Click’ behavior….’
  35. OPTIONAL – Type 2, then press the Enter button for “Combine taskbar buttons and hide labels”
  36. OPTIONAL – Type 2, then press the Enter button for “Show app icons on main taskbar….”
  37. Type y, then press the Enter button for “Do you want to make any changes to File Explorer?”
  38. Type 1, then press the Enter button for “Open File Explorer to ‘Home'”
  39. OPTIONAL – Type n, then press the Enter button for “Show hidden files….”
  40. OPTIONAL – Type y, then press the Enter button for “Show file extensions….”
  41. OPTIONAL – Type y, then press the Enter button for “Add all common folders (Desktop, Downloads, etc.) back….”
  42. OPTIONAL – Type n, then press the Enter button for “Hide the Home section”
  43. Type y, then press the Enter button for “Hide the Gallery section…”
  44. Type y, then press the Enter button for “Hide the duplicate removable drive….”
  45. Press Enter to confirm the choices
  46. OPTIONAL – Type n, then press the Enter button for “System restore is disabled, would you like to enable it and create a restore point?”
  47. Press Enter to exit

Additional Windows Modifications

This next step will go through more modifications for Windows with the intent to reduce the number of annoyances that a team could encounter.

Open PowerShell ISE from the start menu with admin permissions. (If you go to the start menu you can type “PowerShell” and then in the right side of the menu you will see “Run ISE as administrator”

NOTE: Please read the PowerShell code below before you execute it. While this process has been tested and is used for the teams I support you should try to understand what it is doing before you run it.

Copy and paste the below code into the “Untitled.ps1” text area. For the prompts you will want to answer with “Yes” or “Yes to All”

PowerShell
# Run this script as admin

# Allow script execution for this session
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Confirm:$false

#region Functions
function frc-change-service ($servicename, $serviceaction, $servicestatuptype) {

    $service_status = Get-Service -Displayname "$servicename" -ErrorAction SilentlyContinue

    #$service_status.Length

    if ($service_status.Length -gt 0) {
        $ServiceDetail = $(Get-Service -Displayname $servicename)
        Write-Output "$servicename ($($ServiceDetail.Name))"
        switch ($serviceaction) {
            "start" {
                if ($ServiceDetail.Status -eq "Stopped") {
                    Write-Output "    Starting"
                    Start-Service $servicename -Verbose
                }
                else {
                    Write-Output "    Is not Stopped"
                }
            }
            default {
                if ($ServiceDetail.Status -ne "Stopped") {
                    Write-Output "    Stoping"
                    Stop-Service $servicename -Verbose
                }
                else {
                    Write-Output "    Is already Stopped"
                }
            }
        }
   
        if ($ServiceDetail.Status -ne $servicestatuptype) {
            Write-Output "    Setting to $servicestatuptype"
            Set-Service $ServiceDetail.Displayname -StartupType $servicestatuptype -Verbose
        }
        else {
            Write-Output "    Is already set to $servicestatuptype"
        }
    }
}

function Set-RegistryCustomizations() {
    param (
        [string]$registryPath,
        [string]$Name,
        [string]$Value,
        [string]$Type = "DWORD"
    )
    If (!(Test-Path $registryPath)) {
        New-Item -Path $registryPath -Force
        New-ItemProperty -Path $registryPath -Name $Name -Value $Value -PropertyType $Type -Force
    }
    else {
        New-ItemProperty -Path $registryPath -Name $Name -Value $Value -PropertyType $Type -Force
    }
}
#endregion Functions

#region Require confirmation to delete (send items to Recycle Bin)
Set-RegistryCustomizations -registryPath "HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" -Name "ConfirmFileDelete" -Value "1"
#endregion Require confirmation to delete (send items to Recycle Bin)

#region Windows 10/11 Registry Changes

# Disable Live Tiles
Set-RegistryCustomizations -registryPath "HKCU:\Software\Policies\Microsoft\Windows\CurrentVersion\PushNotifications" -Name "NoTileApplictionNotification" -Value "1"

# Disable fun facts, tips and more from Windows and Cortana on your lock screen
Set-RegistryCustomizations -registryPath "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SubscribedContent-338387Enabled" -Value "0"

# Disable Show me the Windows welcome experience after updates and occasionally when I sign in to highlight what's new and suggested
Set-RegistryCustomizations -registryPath "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SubscribedContent-310093Enabled" -Value "0"
Set-RegistryCustomizations -registryPath "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SubscribedContent-338388Enabled" -Value "0"
Set-RegistryCustomizations -registryPath "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SubscribedContent-338389Enabled" -Value "0"
Set-RegistryCustomizations -registryPath "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SubscribedContent-338393Enabled" -Value "0"

# Align Left
Set-RegistryCustomizations -registryPath "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "TaskbarAl" -Value "0"

# Remove Task View Button
Set-RegistryCustomizations -registryPath "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ShowTaskViewButton" -Value "0"

# Remove Searchbox
Set-RegistryCustomizations -registryPath "HKCU:\Software\Microsoft\Windows\CurrentVersion\Search" -Name "SearchboxTaskbarMode" -Value "0"
Set-RegistryCustomizations -registryPath "HKCU:\Software\Policies\Microsoft\Windows\Explorer" -Name "DisableSearchBoxSuggestions" -Value "1"

# Remove Widgets
Set-RegistryCustomizations -registryPath "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "TaskbarDa" -Value "0"
Set-RegistryCustomizations -registryPath "HKLM:\Software\Policies\Microsoft\Dsh" -Name "AllowNewsAndInterests" -Value "0"

Set-RegistryCustomizations -registryPath "HKCU:\Software\Microsoft\Windows\CurrentVersion\Feeds" -Name "ShellFeedsTaskbarViewMode" -Value "2"
# 0 - Shows icon and text
# 1 - Show only icon
# 2 - Hide News and Interests

Set-RegistryCustomizations -registryPath "HKLM:\Software\Policies\Microsoft\Windows\Windows Feeds" -Name "EnableFeeds" -Value "0"

# Remove CoPilot
Set-RegistryCustomizations -registryPath "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ShowCopilotButton" -Value "0"
Set-RegistryCustomizations -registryPath "HKCU:\Software\Policies\Microsoft\Windows\WindowsCopilot" -Name "TurnOffWindowsCopilot" -Value "1"

# Remove Chat
Set-RegistryCustomizations -registryPath "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "TaskbarMn" -Value "0"

#endregion Windows 10/11 Registry Changes

#region Set Time Zone and sync clock
#Get-TimeZone -ListAvailable | Format-Table -AutoSize 
Set-TimeZone "Eastern Standard Time"
net stop w32time
net start w32time
w32tm /resync /force
#endregion Set Time Zone and sync clock


#region Stop Windows Services
$services = @(
    "AeLookupSvc" ,
    "ALG" ,
    "Block Level Backup Engine Service" ,
    "Certificate Propagation" ,
    "Distributed Link Tracking Client" ,
    "dmwappushsvc" ,
    "ehRecvr" ,
    "ehSched" ,
    "HomeGroup Listener" ,
    "HomeGroup Provider" ,
    "IP Helper" ,
    "irmon" ,
    "MapsBroker" ,
    "MSiSCSI" ,
    "PeerDistSvc" ,
    "Portable Device Enumerator Service" ,
    "ProtectedStorage" ,
    "Remote Registry" ,
    "RetailDemo" ,
    "RpcLocator" ,
    "SCPolicySvc" ,
    "SSDP Discovery" ,
    "Secondary Logon" ,
    "SNMPTRAP" ,
    "Software Protection" ,
    "TCP/IP NetBIOS Helper" ,
    "Themes" ,
    "Touch Keyboard and Handwriting Panel Service" ,
    "UxSms" ,
    "Windows Media Player Network Sharing Service" ,
    "Windows Time" ,
    "WinRM" ,
    "WMPNetworkSvc" ,
    "WpcMonSvc" ,
    "dmwappushsvc" ,
    "ehRecvr" ,
    "ehSched" ,
    "WwanSvc" ,
    "XblAuthManager" ,
    "XboxNetApiSvc" 
)

foreach ($service in $services) {
    Write-Output "Attempting to stop $service"

    frc-change-service "$service" stop manual
}
#endregion Stop Windows Services

#region Remove Windows Apps
$apps = @(
    "*Microsoft.GetHelp*"
    "*Microsoft.Getstarted*"
    "*Microsoft.WindowsFeedbackHub*"
    "*Microsoft.BingNews*"
    "*Microsoft.BingFinance*"
    "*Microsoft.BingSports*"
    "*Microsoft.BingWeather*"
    "*Microsoft.BingTranslator*"
    "*Microsoft.MicrosoftOfficeHub*"
    "*Microsoft.Office.OneNote*"
    "*Microsoft.MicrosoftStickyNotes*"
    "*Microsoft.SkypeApp*"
    "*Microsoft.OneConnect*"
    "*Microsoft.Messaging*"
    "*Microsoft.WindowsSoundRecorder*"
    "*Microsoft.ZuneMusic*"
    "*Microsoft.ZuneVideo*"
    "*Microsoft.MixedReality.Portal*"
    "*Microsoft.3DBuilder*"
    "*Microsoft.Microsoft3DViewer*"
    "*Microsoft.Print3D*"
    "*Microsoft.549981C3F5F10*"   #Cortana app
    "*Microsoft.MicrosoftSolitaireCollection*"
    "*Microsoft.Asphalt8Airborne*"
    "*king.com.BubbleWitch3Saga*"
    "*king.com.CandyCrushSodaSaga*"
    "*king.com.CandyCrushSaga*"
    "*Windows.CBSPreview*"
    "*MicrosoftWindows.Client.CBS*"
    "*Microsoft.BingWeather*"
    "*Microsoft.MicrosoftSolitaireCollection*"
)

foreach ($app in $apps) {
    Write-Output "Attempting to remove $app"

    Get-AppxPackage -Name $app -AllUsers | Remove-AppxPackage
}
#endregion Remove Windows Apps

#region Windows Update via PowerShell
# Install Windows Update PowerShell module
Install-Module -Name PSWindowsUpdate -Force -Confirm:$false

# Import to use Windows Update PowerShell module
Import-Module -Name PSWindowsUpdate

# List options of Windows Update PowerShell module to verify it installed
Get-Command -Module PSWindowsUpdate

# Enable adanced option of Windows Update "Receive updates for other Microsoft products when you update Windows
Add-WUServiceManager -ServiceID "7971f918-a847-4430-9279-4a52d1efe18d" -AddServiceFlag 7 -Confirm:$false

# Get Windows Updates (Similar to apt/yum update, it will search for updates)
Get-WindowsUpdate

# Install Needed Updates ignoring reboot (NOTE: the -MicrosoftUpdate parameter is needed to pull down other Microsoft application updates)
# Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -IgnoreReboot -Confirm:$false
#endregion Windows Update via PowerShell

#region Windows Defender
# Update Windows Defender Definitions/Signature
Update-MpSignature

# Validate version
Get-MpComputerStatus | Format-List *version, AntivirusSignatureLastUpdated

# Validate Enable services
Get-MpComputerStatus | Format-List *enabled, IsTamperProtected, AntivirusSignatureLastUpdated

# Validate servies running
Get-Service Windefend, SecurityHealthService, wscsvc | Select-Object Name, DisplayName, Status

# Start Windows Defender Quick Scan
#Start-MpScan -ScanType QuickScan

# Start Windows Defender Full Scan
# Start-MpScan -ScanType FullScan

# Cancel running scan
# Start-Process -FilePath "C:\Windows\System32\cmd.exe" -verb runas -ArgumentList { /c "C:\Program Files\Windows Defender\MpCmdRun.exe" -Scan -Cancel}
#endregion Windows Defender

#region Rename Computer
$renamecomputer = Read-Host -Prompt "Would you like to rename the computer?`nNOTE: This will force a restart of the computer.`n(yes/no)"
if ($renamecomputer -eq 'yes') {

    $sComputerName = Read-Host 'Type new computer name'
    Rename-Computer -NewName $sComputerName -Force -PassThru
    Restart-Computer
}
#endregion Rename Computer

$restartcomputer = Read-Host -Prompt "Would you like to restart the computer (yes/no)?"
if ($restartcomputer -eq 'yes') {
    Restart-Computer
}

Download Needed Applications

Create a DownloadList.txt file from the URLs below

PowerShell
https://www.7-zip.org/a/7z1900-x64.exe
https://download.ni.com/support/nipkg/products/ni-f/ni-frc-2026-game-tools/26.0/offline/ni-frc-2026-game-tools_26.0.0_offline.iso
https://packages.wpilib.workers.dev/installer/v2026.2.1/Win64/WPILib_Windows-2026.2.1.iso
https://rhc2.revrobotics.com/download/rev-hardware-client.exe

Copy the location of the DownloadList.txt file into the script below, specifically line 2 should be the location of the DownloadLinks.txt file.

Running the code below will download the files one by one and then open the directory with all your files so you can manually install each file. As time goes on I will clean up the original PowerShell script to download and install everything but for now this will be what is needed.

PowerShell
# Define the path to the text file containing URLs
$urlsFilePath = "C:\Robotics\DownloadLinks.txt"

# Define the folder where downloaded files will be saved
$downloadFolder = "C:\Robotics\downloads"

# Ensure the download folder exists
if (!(Test-Path $downloadFolder)) {
    New-Item -ItemType Directory -Path $downloadFolder
}

# Read the URLs from the text file
if (Test-Path $urlsFilePath) {
    $urls = Get-Content -Path $urlsFilePath
}
else {
    Write-Host "The file containing URLs does not exist: $urlsFilePath"
    exit
}

# Download each file from the URLs
foreach ($url in $urls) {
    try {
        # Extract the file name from the URL
        $fileName = [System.IO.Path]::GetFileName($url)

        # Define the full path for the downloaded file
        $destinationPath = Join-Path -Path $downloadFolder -ChildPath $fileName

        # Download the file
        Write-Host "Downloading: $url"
        Invoke-WebRequest -Uri $url -OutFile $destinationPath
        Write-Host "Downloaded to: $destinationPath"
    }
    catch {
        Write-Host "Failed to download: $url"
        Write-Host "Error: $_"
    }
}

Invoke-Item $downloadFolder
Originally Posted on January 26, 2026
Last Updated on February 4, 2026
All information on this site is shared with the intention to help. Before any source code or program is ran on a production (non-development) system it is suggested you test it and fully understand what it is doing not just what it appears it is doing. I accept no responsibility for any damage you may do with this code.