IT 服务台 · PowerShell 工具箱
tbx 服务台工具箱
一条命令完成装机 / 驱动部署 / 故障修复 —— 多源下载 + 完整性校验
tbx 服务台工具箱
远程接管坐席或客户设备后,一条命令拉起工具箱,完成软件安装、驱动部署、故障修复、信息采集。
面向酒店前台这类现场:机器型号杂、系统版本跨度大(Win7 到 Win11)、网络条件差,而每次支援要做的事情却高度重复。
怎么用
工具箱不是公开资源,命令需要带授权码。在 公开页面 上选择有效期、点击命令框,命令会自动复制到剪贴板,然后在目标设备的 PowerShell 里粘贴运行:
irm https://ext.turinghost.org/r/<授权码> | iex回车后是交互菜单,输入编号即可执行,多选用空格或逗号分隔。
不想进菜单,也可以直接点名要装的项:
& ([scriptblock]::Create((irm <授权链接>))) xms-env 7zip ihotel有效期
| 类型 | 说明 |
|---|---|
| 一次性 | 拉取一次后立即失效,15 分钟内未使用则自动作废 |
| 1 小时 | 期限内可重复使用 |
| 24 小时 | 期限内可重复使用 |
远程协助建议用一次性:命令发出去后即使被转发或截图,也无法二次使用。
能做什么
| 分类 | 内容 |
|---|---|
| 安装 | PMS(iHotel / THEF / XMS)、身份证读卡器驱动、打印机驱动、Adobe AIR 运行时、常用软件 |
| 工具 | 清理系统缓存、清打印队列并重启服务、Windows Installer 清理 |
| 其他 | 采集本机信息(型号 / 系统 / 磁盘 / 网络 / 连通性 / 错误日志) |
特性
先探测再安装 —— 装之前先查本机是否已有、版本够不够。已装且版本达标会明确跳过,不会重复安装覆盖现有配置。
多源自动降级 —— 每个下载源都配了备份。首选源失败或持续过慢会自动切换,全部失败才报错,不静默跳过。
完整性校验 —— 每个安装包都有 SHA256 校验,不符会重新下载或换源,绝不安装来路不明的文件。
依赖自动处理 —— 装 .air 类 PMS 会自动先装 Adobe AIR 运行时。
设计要点
加一个软件 = 加一段 JSON
所有软件走同一条流水线,差异全部由 manifest.json 的数据表达,不写新脚本:
Invoke-TbxItem 'xms' → Test-Installed 探测已装?装了就跳过(明确打印,不静默) → Resolve-Deps 依赖先装(.air 自动先装 AIR 运行时) → Get-TbxFile 多源下载 + Hash 校验 + 限速切源 → Install-TbxPackage 按 type 静默安装(exe/msi/air/zip) → New-TbxShortcut 按需建快捷方式 → Remove-TbxTemp 删除下载的依赖文件 → Write-TbxLog 记录本次动作内置动作同理:manifest 里的 action 字段直接就是函数名,主程序动态派发,构建期校验「action ↔ 文件 ↔ 函数名」三者一致,错配立即中止构建——不会等到客户机器上才报「未知动作」。
探能力,不探版本号
客户机器的 Windows 千差万别。按版本号分支会导致组合爆炸,还要处理本地化字符串:
# ✗ 别这样:版本组合爆炸,还有本地化问题if ($os.Caption -match '家庭版') { ... }
# ✓ 这样:一次判断覆盖所有版本if (Test-TbxCmd 'Set-DnsClientServerAddress') { 走新路 } else { 走 netsh }只有确实由版本决定的能力才查版本(如组策略仅专业版以上)。
单文件打包:冷启动 8.5 秒 → 2 秒
最初脚本分文件加载,lib/ 六个文件各拉一次。香港链路一次往返约 1.6 秒,六个请求就是 8.5 秒冷启动,连续跑几次还会撞限流。
| 分文件 | 单文件 | |
|---|---|---|
| HTTP 请求 | 6 | 1 |
| 冷启动 | 8.5s | 2.0s |
| 连测 30 次 | 撞限流 | 0 限流 |
52KB 的传输只占 0.06 秒——瓶颈从来是往返次数,不是体积。
三源实测定序
在装机现场的设备上实测三个源:
| 源 | 均速 | 首字节 | 58MB 驱动 |
|---|---|---|---|
| Cloudflare R2 | 1.09 MB/s | 0.93s | 53 秒 |
| VPS(香港) | 0.46 MB/s | 1.03s | 127 秒 |
| GitHub Release | 0.08 MB/s | 1.57s | 687 秒 |
三个源首字节都约 1 秒,说明连接、DNS、路由都正常,但 GitHub 传输速率只有 R2 的十四分之一——首字节正常 + 传输极慢 = 典型限速特征,不是链路故障。顺序因此定为 R2 → VPS → GitHub。
运维本人的网络和酒店前台的网络,对同一个域名的可达性可以完全不同。源优先级必须拿现场设备实测。
脚本完整性校验
最严重的单点风险是:服务器被入侵 → 脚本被替换 → 所有客户机器以管理员权限执行任意代码。
脚本自校验是安全剧场——攻击者既然能改脚本,顺手把校验逻辑删掉即可。所以校验放在 Cloudflare Worker 上:不同主机、不同凭证,服务器沦陷也改不到,且它本来就在兑换链路上。
兑换 /r/<token> → Worker 取一次线上脚本,算 SHA-256 → 与登记的指纹比对 符合 → 302 放行 不符 → 409 拒绝 + 写告警 未登记 → 放行(首次部署不该把工具箱锁死)注意事项
- 部分操作(驱动安装、打印服务重启)需要管理员权限,请在管理员 PowerShell 中运行
- 驱动包多为厂商原始安装器,会弹出安装向导需要人工确认
- 压缩包类驱动会自动解压到桌面
tbx-drivers目录并打开
系统要求
Windows 10 / 11 —— 开箱即用。
Windows 7 —— 需要 PowerShell 3.0 以上(多数打过补丁的机器都有)。判断方法:在 PowerShell 里输入 $PSVersionTable,看 PSVersion 是不是 3.0 以上。原装未升级的 Win7(PowerShell 2.0)暂时用不了,因为拉取用的 irm 那时候还没有。
网络方面不用担心:本站对老系统的 TLS 1.0/1.1 也放行,不会因为加密协议太旧而连不上。
相关阅读
开发过程中踩过的坑、以及那些「看起来成功了实际没成功」的事情,写在了这篇文章里: