LFGGGGGGG ITS FUCKIN WORKANSSSS

This commit is contained in:
2026-05-18 06:02:35 -06:00
parent 50a79de9b8
commit 7b50366039
+125
View File
@@ -1,8 +1,133 @@
# todo: sanity checks for if x wsl is installed and x v2, if x usbipd is installed, if the user is running powershell >-7
# x if wsl is not installed, install it
# x if usbipd is not installed, install it
# if wsl is not version 2, upgrade it
# :pope: may work
#Requires -RunAsAdministrator
# llm cancer string that amkes it run as admin
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs
exit
}
# detach and unbind all devices and exit
if($args[0] -eq "detach") {
Write-Host "Detaching and Unbinding all USB devices from WSL"
usbipd detach --all
usbipd unbind --all
Write-Host "All USB devices have been detached and unbound from WSL"
Write-Host "Press Any Key To Exit"
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
exit
}
# list devices and exit
if ($args[0] -eq "list") {
Write-Host "Listing USB devices attached to WSL"
usbipd list
Write-Host "Press Any Key To Exit"
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
exit
}
# help bs
if ($args[0] -eq "help") {
Write-Host "Usage: .\get_wsl_usb.ps1 [options]"
Write-Host "Options:"
Write-Host " attach Attach a USB device to WSL (default action if no options are provided)"
Write-Host " detach Detach and unbind all USB devices from WSL"
Write-Host " list List USB devices attached to WSL"
Write-Host " help Display this help message"
Write-Host "If no options are provided, the script will list USB devices and allow you to attach one to WSL."
Write-Host "Press Any Key To Exit"
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
exit
}
# now sanity/env checks
## check if wsl installed is version 2, if not upgrade it it
function Check-WSLVersion {
<#
.SYNOPSIS
Check if WSL is version 2 and upgrade if necessary.
.DESCRIPTION
This function checks the installed WSL version and upgrades to WSL 2 if needed.
#>
# Get WSL status
$wslStatus = wsl --status 2>&1
# Check if WSL 2 is available (look for WSL 2 in status output)
if ($wslStatus -match "WSL version:\s+\d") {
if ($wslStatus -match "Default distribution version:\s+2") {
Write-Host "WSL 2 is already installed and set as default."
return $true
}
else {
Write-Host "WSL 1 detected. Attempting to upgrade to WSL 2..."
try {
wsl --update
Write-Host "WSL has been updated. Please restart your computer and run this script again."
return $false
}
catch {
Write-Host "Error updating WSL: $_"
return $false
}
}
}
else {
# Fallback: try to get list of distributions
$wslList = wsl --list -v 2>&1
if ($wslList -match "VERSION\s+2") {
Write-Host "WSL 2 detected."
return $true
}
elseif ($wslList -match "VERSION\s+1") {
Write-Host "WSL 1 detected. Upgrading to WSL 2..."
try {
$distros = $wslList | Where-Object { $_ -match "^[^*]" } | ForEach-Object { ($_ -split '\s+')[0] } | Where-Object { $_ -and $_ -ne "NAME" }
foreach ($distro in $distros) {
Write-Host "Upgrading $distro to WSL 2..."
wsl --set-version $distro 2
}
Write-Host "Distros have been upgraded to WSL 2."
return $true
}
catch {
Write-Host "Error upgrading WSL: $_"
return $false
}
}
}
return $false
}
## if wsl not installed, install it
if (-not (Get-Command wsl -ErrorAction SilentlyContinue)) {
Write-Host "WSL is not installed. Installing WSL..."
wsl --install
Write-Host "WSL has been installed. Please restart your computer and run this script again."
exit
}
## Check WSL version and upgrade if needed
# if (-not (Check-WSLVersion)) {
# Write-Host "WSL upgrade required. Please restart your computer and run this script again."
# }
# do the wsl version check and upgrade if needed before we do anything else
if (-not (Get-Command usbipd -ErrorAction SilentlyContinue)) {
Write-Host "usbipd is not installed. Installing usbipd..."
winget install usbipd
Write-Host "usbipd has been installed."
}
# Your code goes here
Write-Host "Admin Perms Confirmed!"
Write-Host "Launching WSL"