Install
openclaw skills install @yujianyu/powershell7-toolkit在 Windows 上部署 PowerShell 7 与 Rust 高性能命令行工具链(ripgrep / fd / fzf / bat / delta / jq),根治中文输出乱码,并把 pwsh 设为系统默认 shell。当 AI 助手在 Windows 上执行命令时遇到以下情况,应主动调用本技能:报「字符串缺少终止符」、中文输出乱码、内联命令的引号被拆散、连接 GitHub 下载超时、脚本里不能用 && 或 ?: 三元运算、Select-String 检索太慢。这些多半是系统自带的 PowerShell 5.1 太老所致。跨机器自包含、幂等、免管理员、断网可装。
openclaw skills install @yujianyu/powershell7-toolkit一套自包含、幂等、跨机器的部署包。任何 AI 助手都可以照着本文件执行,无需联网查资料。
powershell -ExecutionPolicy Bypass -File "<技能目录>\scripts\install.ps1"
它的策略是「探测优先 → 自动下载兜底」:
Program Files\PowerShell\7、用户目录、注册表 App Paths、PATH、scoop/chocolatey、Store 版(WindowsApps)。找到就直接复用,绝不重复安装常用参数:
| 参数 | 说明 |
|---|---|
-ZipPath "D:\xxx\PowerShell-7.6.7-win-x64.zip" | 指定安装包(跳过自动搜索) |
-ToolsRoot "D:\Tools\ps7" | 安装根目录(默认 %LOCALAPPDATA%\ps7-toolkit) |
-Mirror "https://your.mirror/" | 自定义下载镜像(会插到内置列表最前) |
-SkipDefaults | 只装不配(不改系统默认) |
-SkipRustTools | 只装 PowerShell 7 |
-Force | 强制在 -ToolsRoot 下放一份完整 pwsh:本机已装则复制(约 5 秒),没装才下载 |
-CheckOnly | 只体检,不做任何改动 |
特性:幂等(重复跑只补缺失项)、免管理员权限、不依赖 Python、不写死盘符、断网可用、卸载只需删目录 + 3 个注册表项。
-ToolsRoot 装到别的盘:
# 从 App Paths 拿真实位置(setup-defaults 会写,指向实际安装的 pwsh)
$pwsh = (Get-ItemProperty 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\pwsh.exe').'(default)'
& $pwsh -NoProfile -File script.ps1
pwsh(装完在 PATH 里)。只有在必须写死时才用默认位置
%LOCALAPPDATA%\ps7-toolkit\ps7\pwsh.exe,而且要先 Test-Path 确认存在。.ps1 文件再用 -File 跑,不要用 -Command 内联 —— 内联时嵌套引号会被外层解析拆散。rg -n --no-heading -e "关键词" -g "*.py" C:\path
[Console]::OutputEncoding 和 $OutputEncoding 是否为 UTF-8(profile 已自动设置)。| 禁止 | 原因 |
|---|---|
改 HKLM\...\Nls\CodePage\ACP = 65001 | 会让老的 GBK 程序(部分国产软件/游戏)全部乱码,风险远大于收益 |
劫持 powershell.exe 指向 pwsh | 系统组件与大量安装脚本硬依赖 C:\Windows\System32\WindowsPowerShell\v1.0\,改了会导致装软件失败 |
用 Add-Type 编译 .NET 代码 | 部分 AI 客户端的安全策略会直接拦截(会改用 Python 或 Expand-Archive 替代) |
在 Bash 里直接调 powershell | 某些客户端策略会拦("Invoking PowerShell from Bash bypasses security checks"),改写成脚本文件执行 |
| 工具 | 用途 | 替代 |
|---|---|---|
| pwsh 7.x | 主力 shell(UTF-8 默认、&& 链、三元 ?:、??、ForEach-Object -Parallel,性能约 2 倍) | Windows PowerShell 5.1 |
| rg (ripgrep) | 极速递归检索,自带 .gitignore 规则 | Select-String / findstr |
| fd | 极速文件名查找 | Get-ChildItem |
| fzf | 模糊查找(可接管 Ctrl+R 历史搜索) | — |
| bat | 带语法高亮的 cat(配 delta 更好看) | cat / type |
| delta | git diff 高亮 | — |
| jq | JSON 处理 | ConvertFrom-Json |
jq 中文键名注意:裸字段名只支持 ASCII。中文键必须写
jq '.["名称"]', 直接写.名称会报INVALID_CHARACTER(中文键名/含空格键名都要走["..."]写法)。
SKILL.md 本文件
assets/icon.png 512x512 图标
scripts/install.ps1 主安装器(幂等,跨机器)
scripts/setup-defaults.ps1 默认化(profile/注册表/文件关联/快捷方式/终端/VSCode)
scripts/verify.ps1 体检脚本,输出诊断报告
scripts/wt-config.ps1 WT/VSCode 配置的文本级改写(保留注释,可被测试单独调用)
scripts/smoke-test.ps1 40 项回归测试(隔离沙箱,不碰系统配置,退出码可接 CI)
references/troubleshooting.md 踩坑与排错
CHANGELOG.md 版本记录
遇到报错或结果不符合预期时,先读 @references/troubleshooting.md,里面有逐条现象与处置办法
(pwsh 找不到、中文仍乱码、双击 .ps1 没反应、镜像下载卡住、Windows Terminal 没跟着切等)。
powershell -ExecutionPolicy Bypass -File "脚本路径\install.ps1"pwsh -v 应显示 7.x;rg --version 应显示 ripgrep安装过程全部在当前用户范围内,不需要管理员权限,不触碰 HKEY_LOCAL_MACHINE,也不会改动系统区域设置(不改 ACP)。
会做的改动:
| 改动 | 位置 | 如何撤销 |
|---|---|---|
| 写入可执行文件 | %LOCALAPPDATA%\ps7-toolkit(或 -ToolsRoot 指定目录) | 删除该目录 |
| 追加用户 PATH | HKCU\...\Environment 的 Path | 删掉该项里的 ps7-toolkit 路径 |
| 写入 profile | %USERPROFILE%\Documents\PowerShell\Microsoft.PowerShell_profile.ps1(7.x)%USERPROFILE%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1(5.1) | 删除该文件或去掉本技能追加的段落 |
| 注册 pwsh 路径 | HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\pwsh.exe | 删除该键 |
| 关联 .ps1 双击行为 | HKCU\Software\Microsoft\Classes\.ps1\shell\open\command | 删除该键 |
| 默认控制台 | HKCU\Console\%%Startup 的 DelegationConsole / DelegationTerminal(仅当检测到 Windows Terminal 时) | 删掉这两个值 |
| 建开始菜单快捷方式 | %APPDATA%\Microsoft\Windows\Start Menu\Programs | 删除对应快捷方式 |
网络行为:仅在需要下载时访问 api.github.com(查版本与真实下载地址)、github.com(下载安装包)、gh-proxy.com / ghfast.top / ghproxy.net(国内加速镜像)、aka.ms(微软官方短链)。不收集任何用户数据、不上报统计、不请求 API Key。
只读体检(verify.ps1)与只装不改(-SkipDefaults)不产生任何持久化改动。