Windows 11 工具链部署与 SSH 踩坑笔记

设备:MAXSUN MS-H110ZL / 8GB RAM / NVIDIA Quadro P1000

系统:Windows 11 IoT Enterprise LTSC 2024(NTLite 精简镜像)

一、已部署工具链

全部放在 C:\Users\root\AppData\Local\Microsoft\WindowsApps\(默认在 PATH):

工具 文件 说明
neofetch winfetch.ps1 + neofetch.cmd PowerShell 版,GitHub: lptstr/winfetch
busybox busybox.exe + 180 个硬链接 v1.38.0,0.7MB
curl 系统自带 真·curl 8.8.0
wget busybox 的 wget 链接

1.1 busybox 使用

powershell

复制代码
busybox --install   # 生成 grep/sed/awk/tar/vi/sh 等 180 个硬链接(不占额外磁盘)
busybox --list      # 查看全部 applet
sh -c "..."         # 迷你 unix shell

1.2 neofetch 安装

powershell

复制代码
# 下载 winfetch.ps1
curl -sL "https://raw.githubusercontent.com/lptstr/winfetch/master/winfetch.ps1" -o /tmp/winfetch.ps1

# 创建 neofetch.cmd 包装器
$neofetchCmd = "@echo off`r`npowershell -NoProfile -ExecutionPolicy Bypass -File `"C:\Users\root\AppData\Local\Microsoft\WindowsApps\winfetch.ps1`" %*"
[System.IO.File]::WriteAllText('C:\Users\root\AppData\Local\Microsoft\WindowsApps\neofetch.cmd', $neofetchCmd, [System.Text.Encoding]::ASCII)

关键: winfetch.ps1 必须使用 UTF-8 with BOM 编码才能在 PowerShell 5.1 中正常运行,否则会出现乱码或执行失败。

1.3 curl/wget 别名冲突

PowerShell 内置了 curlwget 别名,指向 Invoke-WebRequest,会挡住同名 exe。已在 PowerShell profile 中移除别名,现在:

  • curl = 微软原生 curl 8.8.0

  • wget = busybox wget

二、踩坑笔记(SSH 远程操作 Windows)

以下记录在 Linux 端通过 SSH 远程操作 Win11 时遇到的主要问题。

坑 1:PowerShell 引号地狱

ssh host 'powershell -Command "..."' 要经过三层解析(bash → ssh → PowerShell),双引号嵌套极易翻车。

可靠替代方案(按优先级):

  1. scp 推脚本文件再执行 ------ 最稳,任何复杂度都适用

  2. 单层单引号包 PS 命令,内部只用简单语法

  3. -EncodedCommand(base64 UTF-16LE)------ 可行但生成麻烦

坑 2:cmd echo 会展开变量

远程默认 shell 是 PowerShell 时,cmd /c "echo if ($env:X) ..." 里的 $env:X 会被外层 PowerShell 先展开成实际值。

结论: 凡是含 $ 的内容,一律走 scp 推文件,不要用命令行拼接。

坑 3:注册表值名带空格/括号

reg add ... /v "SimSun & NSimSun (TrueType)" 引号穿三层必挂。

解法:.reg 文件,scp 过去后用 reg import

坑 4:执行策略重启后重置

RemoteSigned 策略在一次重启后可能失效,profile 加载失败 → SSH 又乱码。

修复命令:

powershell

复制代码
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force

坑 5:per-user 服务禁不掉

OneSyncSvcWpnUserService 这类带 _数字后缀 的服务,Stop/Set-Service 只对当前实例生效,登录一次就复活。

解决: 必须改 HKLM 模板 Start=4

坑 6:GitHub 直链资产名猜不中

Weasel release 资产实际叫 weasel-0.17.4.0-installer.exe,与直觉不符。

正确做法: 先用 API 列出资产再下载:

powershell

复制代码
iwr api.github.com/repos/rime/weasel/releases/latest | ConvertFrom-Json |
  Select -Expand assets | Select name, browser_download_url

Win11 本机直连 GitHub 不通时,从 Linux 中转下载再 scp。

坑 7:NTLite 精简系统的隐藏地雷

  • Defender 可能被物理删除(不是禁用),装第三方安全软件前先确认

  • 字体被裁剪 → 老软件乱码第一嫌疑是缺 simsun.ttc

  • winget 缺失、商店服务缺失属正常,不必浪费时间排查

三、Windows 激活状态

当前已从评估版转换为 Windows 11 IoT Enterprise LTSC 2024 永久激活

转换步骤

  1. 下载 SKU 文件,解压后将 IoTEnterpriseS 文件夹复制到 C:\Windows\System32\spp\tokens\skus\

  2. 执行转换命令:

cmd

复制代码
cscript.exe %windir%\system32\slmgr.vbs /rilc
cscript.exe %windir%\system32\slmgr.vbs /upk
cscript.exe %windir%\system32\slmgr.vbs /ckms
cscript.exe %windir%\system32\slmgr.vbs /cpky
cscript.exe %windir%\system32\slmgr.vbs /ipk KBN8V-HFGQ4-MGXVD-347P6-PDQGT
  1. 用 MAS 激活:C:\Users\root\MAS_AIO.cmd /HWID

去除水印

cmd

复制代码
reg add "HKCU\Control Panel\Desktop" /v PaintDesktopVersion /t REG_DWORD /d 0 /f
taskkill /f /im explorer.exe
start explorer.exe

四、内存盘备忘(未部署)

Windows 原生无内存盘。如需使用,推荐 ImDisk(开源,CLI 友好):

cmd

复制代码
imdisk -a -s 1G -m R: -p "/fs:ntfs /q /y"
imdisk -D

8GB 内存建议 ≤2GB。

五、快速恢复命令

powershell

复制代码
# 修复执行策略
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force

# 更新 SSH profile
# 确认 profile 存在且编码正确
notepad $PROFILE
相关推荐
Sunshing1515 分钟前
非自治连续系统稳定性定义与定理判据
笔记·学习
苏灵凯18 分钟前
Codex 官网前端可以抄吗?从设计到实现的技术拆解
笔记·ai·agent·codex·deepseek
zhangrelay2 小时前
手机-笔电-等数码产品-电池健康的一些数据-2026
笔记·学习·锂电池
可爱系程序猿2 小时前
Windows 11 添加共享打印机提示 0x00000bc4:从 RPC 发现到策略配置排查
windows·网络协议·rpc
苏子寒3 小时前
Nano-VLLM全代码解析笔记(10)-GemmaRMSNorm和MRoPE
笔记·机器学习·ai·nlp·vllm
草莓熊Lotso1 天前
【Redis 初阶】Set 类型深度解析:去重集合的运算能力与实战场景
linux·网络·数据库·windows·redis·tcp/ip·缓存
sakiko_2 天前
Swift学习笔记42-SwiftUI的属性包装器(讲解+面试)
笔记·学习·ios·swiftui·swift
自小吃多2 天前
器件移动、旋转、镜像、对齐、等间距操作笔记
笔记·嵌入式硬件
mooooooooooye2 天前
2026 年跨平台 SSH 客户端怎么选?Xterminal、Termius、MobaXterm 谁更合适
服务器·网络·ssh