当前位置: 首页 > news >正文

Windows 快速检测 Docker / WSL2 安装环境脚本(附 GUI 版本)

Windows 快速检测 Docker / WSL2 安装环境脚本(附 GUI 版本)

标签:Windows、Docker、WSL2、PowerShell、自动化运维
适用人群:想要快速判断客户电脑能不能装 Docker Desktop / WSL2 的工程师、运维、售前


1️⃣ 为什么要写这个脚本?

很多时候,我们需要给客户部署 Docker Desktop 或基于 WSL2 的开发环境,
结果发现:

  • 系统架构是 32 位 ❌

  • CPU 不支持虚拟化 ❌

  • Windows 版本太老 ❌

  • 内存 / 磁盘不够 ❌

导致前期准备浪费时间,客户体验也不好。

所以我写了一个 一键检测脚本,直接告诉你客户的电脑是否适合安装,省时省力。


2️⃣ 脚本检测逻辑

脚本会自动检测以下项目:

  • ✅ 系统架构:必须是 64 位

  • ✅ CPU 虚拟化:必须开启

  • ✅ Windows 版本:至少 1903 / 内部版本 18362

  • ✅ 内存:≥ 4 GB

  • ✅ 磁盘空间:≥ 20 GB

  • ✅ Hyper-V 和 WSL 功能是否启用

最后给出 清晰的结论

  • ✅ 可以安装

  • ❌ 不可以安装


3️⃣ 一键检测脚本(命令行版)

将以下代码保存为 DockerWSL_Check_Client.ps1

Clear-Host
$errorFlag = $false# 系统架构
$arch = (Get-ComputerInfo).OsArchitecture
if ($arch -notlike "*64*") { $errorFlag = $true }# CPU 虚拟化
$vmSupport = (Get-ComputerInfo).HyperVRequirementVirtualizationFirmwareEnabled
if (-not $vmSupport) { $errorFlag = $true }# Windows 版本
$winBuild = [int](Get-ComputerInfo).OsBuildNumber
if ($winBuild -lt 18362) { $errorFlag = $true }# 内存检查
$memGB = ((Get-ComputerInfo).CsTotalPhysicalMemory / 1GB)
if ($memGB -lt 4) { $errorFlag = $true }# 磁盘空间检查
$diskFreeGB = ((Get-PSDrive C).Free / 1GB)
if ($diskFreeGB -lt 20) { $errorFlag = $true }# Hyper-V / WSL 功能检查
$hyperV = (Get-WindowsOptionalFeature -Online | Where-Object {$_.FeatureName -like "Microsoft-Hyper-V*"}).State
$wsl = (Get-WindowsOptionalFeature -Online | Where-Object {$_.FeatureName -like "*Subsystem-Linux*"}).State
if ($hyperV -ne "Enabled" -or $wsl -ne "Enabled") { $errorFlag = $true }Write-Host "`n===== 检测结果 ====="
if ($errorFlag) {Write-Host "❌ 系统不适合安装 Docker Desktop / WSL2" -ForegroundColor Red
} else {Write-Host "✅ 系统适合安装 Docker Desktop / WSL2" -ForegroundColor Green
}

4️⃣ 使用方法

  1. 保存脚本到桌面,例如 DockerWSL_Check_Client.ps1

  2. 右键 以管理员身份运行 PowerShell

  3. 运行命令:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\DockerWSL_Check_Client.ps1

屏幕会显示 ✅ 或 ❌。


5️⃣ GUI 图形化版本

如果客户不熟悉 PowerShell,可以用图形化版本:

Add-Type -AssemblyName System.Windows.Forms$errorFlag = $false$arch = (Get-ComputerInfo).OsArchitecture
if ($arch -notlike "*64*") { $errorFlag = $true }$vmSupport = (Get-ComputerInfo).HyperVRequirementVirtualizationFirmwareEnabled
if (-not $vmSupport) { $errorFlag = $true }$winBuild = [int](Get-ComputerInfo).OsBuildNumber
if ($winBuild -lt 18362) { $errorFlag = $true }$memGB = ((Get-ComputerInfo).CsTotalPhysicalMemory / 1GB)
if ($memGB -lt 4) { $errorFlag = $true }$diskFreeGB = ((Get-PSDrive C).Free / 1GB)
if ($diskFreeGB -lt 20) { $errorFlag = $true }$hyperV = (Get-WindowsOptionalFeature -Online | Where-Object {$_.FeatureName -like "Microsoft-Hyper-V*"}).State
$wsl = (Get-WindowsOptionalFeature -Online | Where-Object {$_.FeatureName -like "*Subsystem-Linux*"}).State
if ($hyperV -ne "Enabled" -or $wsl -ne "Enabled") { $errorFlag = $true }if ($errorFlag) {$message = "❌ 系统不适合安装 Docker Desktop / WSL2"$icon = [System.Windows.Forms.MessageBoxIcon]::Error
} else {$message = "✅ 系统适合安装 Docker Desktop / WSL2"$icon = [System.Windows.Forms.MessageBoxIcon]::Information
}[System.Windows.Forms.MessageBox]::Show($message, "Docker/WSL 检测结果", [System.Windows.Forms.MessageBoxButtons]::OK, $icon)

效果:客户双击运行脚本 → 直接弹窗 ✅ 或 ❌,完全零门槛。


6️⃣ 打包成 .EXE(可选)

如果客户不想接触脚本,可以用 PS2EXE 工具把脚本打包成 .exe 文件:

Install-Module -Name ps2exe
Invoke-ps2exe .\DockerWSL_Check_GUI.ps1 .\DockerWSL_Check.exe

这样客户直接双击 .exe 就能运行,无需打开 PowerShell。


7️⃣ 总结

✅ 通过这个脚本,你可以 一分钟判断客户电脑能否装 Docker
✅ 支持命令行和图形化两种模式
✅ 可以打包成 .exe 发给客户直接运行


http://www.dtcms.com/a/392803.html

相关文章:

  • Redis最佳实践——电商应用的性能监控与告警体系设计详解
  • 【C++】C++11(二)
  • 如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘selenium’ 问题
  • 实测美团LongCat-Flash:当大模型装上“速度引擎”,能否改写智能体战局?
  • unicode ascii utf-8的区别
  • Rust_2025:阶段1:day6.1 collect补充 ,迭代器补充 ,闭包,Hashmap搜索指定值的个数,合并迭代器
  • ESP32- 项目应用2 音乐播放器之音响驱动 #2
  • Datawhale25年9月组队学习:llm-preview+Task2:大模型使用
  • Agent记忆:Memvid、Memary、MemoryOS
  • 《主流PLC品牌型号大全解析》,电气设计时PLC应该怎么选
  • 从92到102,一建实务突破之路:坚持与自我超越
  • 探索C语言中字符串长度的计算方法
  • 使用node框架 Express开发仓库管理系统练习项目
  • 网络系统管理
  • 【Vue3 ✨】Vue3 入门之旅 · 第四篇:组件的创建与传递数据
  • PHP魔法函数和超全局数组介绍——第一阶段
  • 深入剖析“惊群效应”:从Java的notifyAll到epoll的解决方案
  • 鸿蒙应用统一埋点体系设计
  • Rust_2025:阶段1:day6.2 Box ,Cow ,Rc ,Refcell ,Arc,线程(join(),lock(),子线程与主线程通信
  • GD32VW553-IOT V2【微秒延迟时间实现方法】
  • html5是移动设备玖写口吧目盖由
  • 华为全联接大会 2025:跃升行业智能化
  • 采用Mayavi对BEV相机外参进行可视化
  • 算法高频题-动态规划
  • 第七篇:强类型枚举:enum class - 彻底解决传统枚举的缺陷
  • 汽车中的轻量化 AI 算法:驶向智能出行新未来
  • 《根治开放世界坐骑卡顿:从时钟同步到负载均衡的架构级解决方案》
  • 在线预览Office文件全攻略
  • Cordova打包Vue项目成APK——真机调试
  • DNS协议、ICMP协议、NAT技术