Wsl2DebianEnv/scripts/system/check_windows_wsl.bat

134 lines
3.6 KiB
Batchfile

@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
:: Check for admin privileges
net session >nul 2>&1
if %errorlevel% neq 0 (
echo [WARN] 需要管理员权限
echo [INFO] 请右键点击此脚本,选择"以管理员身份运行"
pause
exit /b 1
)
echo.
echo [INFO] 开始检查 WSL2 环境...
echo.
:: Check Windows version
echo [INFO] 检查 Windows 版本...
for /f "tokens=*" %%a in ('ver') do set "windows_version=%%a"
echo Windows 版本: !windows_version!
:: Check WSL installation
echo [INFO] 检查 WSL 安装状态...
wsl --version >nul 2>&1
if %errorlevel% equ 0 (
echo [INFO] WSL 已安装
wsl --version
) else (
echo [ERROR] WSL 未安装
echo [INFO] 请访问 https://aka.ms/wsl 安装 WSL
goto :error
)
:: Check WSL2 status
echo [INFO] 检查 WSL2 状态...
wsl -l -v > temp.txt
findstr /i "2" temp.txt >nul
if %errorlevel% equ 0 (
echo [INFO] WSL2 已启用
echo [INFO] WSL 发行版列表:
type temp.txt
) else (
echo [WARN] WSL2 未启用
echo [INFO] 请运行以下命令启用 WSL2:
echo wsl --set-default-version 2
goto :error
)
del temp.txt
:: Check Debian installation
echo [INFO] 检查 Debian 安装状态...
wsl -d Debian echo "Debian is installed" >nul 2>&1
if %errorlevel% equ 0 (
echo [INFO] Debian 已安装
) else (
echo [WARN] Debian 未安装
echo [INFO] 请运行以下命令安装 Debian:
echo wsl --install -d Debian
goto :error
)
:: Check virtualization
echo [INFO] 检查虚拟化状态...
systeminfo | findstr /i "Hyper-V" > temp.txt
findstr /i "Virtual Ethernet Adapter" temp.txt >nul
if %errorlevel% equ 0 (
echo [INFO] 虚拟化已启用
) else (
findstr /i "hypervisor has been detected" temp.txt >nul
if %errorlevel% equ 0 (
echo [INFO] 虚拟化已启用
) else (
echo [ERROR] 虚拟化未启用
echo [INFO] 请在 BIOS 中启用虚拟化 (Intel VT-x 或 AMD-V)
goto :error
)
)
del temp.txt
:: Check Windows features
echo [INFO] 检查 Windows 功能...
dism /online /get-featureinfo /featurename:Microsoft-Windows-Subsystem-Linux > temp.txt
findstr /i "状态.*已启用" temp.txt >nul
if %errorlevel% equ 0 (
echo [INFO] Linux 子系统已启用
) else (
echo [WARN] Linux 子系统未启用
echo [INFO] 请运行以下命令启用 Linux 子系统:
echo dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
goto :error
)
dism /online /get-featureinfo /featurename:VirtualMachinePlatform > temp.txt
findstr /i "状态.*已启用" temp.txt >nul
if %errorlevel% equ 0 (
echo [INFO] 虚拟机平台已启用
) else (
echo [WARN] 虚拟机平台未启用
echo [INFO] 请运行以下命令启用虚拟机平台:
echo dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
goto :error
)
del temp.txt
echo.
echo ============================================
echo 检查完成!环境已就绪
echo ============================================
echo.
echo [INFO] 您的 WSL2 环境已经准备就绪:
echo [INFO] 1. Windows 版本符合要求
echo [INFO] 2. WSL2 已正确安装并启用
echo [INFO] 3. Debian 发行版已安装
echo [INFO] 4. 虚拟化功能已启用
echo [INFO] 5. 所需的 Windows 功能已启用
echo.
echo [INFO] 您现在可以开始使用 WSL2 环境了!
echo ============================================
echo.
echo [INFO] 按任意键退出...
pause >nul
goto :eof
:error
echo.
echo [WARN] 检查未通过,请按照提示解决问题
echo [INFO] 按任意键退出...
pause >nul
exit /b 1
:eof
endlocal