全部作品
tbx 服务台工具箱 图标

IT 服务台 · PowerShell 工具箱

tbx 服务台工具箱

一条命令完成装机 / 驱动部署 / 故障修复 —— 多源下载 + 完整性校验

当前版本 1.0 安装 需管理员 · 授权码拉取 次浏览

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 请求61
冷启动8.5s2.0s
连测 30 次撞限流0 限流

52KB 的传输只占 0.06 秒——瓶颈从来是往返次数,不是体积。

三源实测定序

在装机现场的设备上实测三个源:

源均速首字节58MB 驱动
Cloudflare R21.09 MB/s0.93s53 秒
VPS(香港)0.46 MB/s1.03s127 秒
GitHub Release0.08 MB/s1.57s687 秒

三个源首字节都约 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 也放行,不会因为加密协议太旧而连不上。

相关阅读

开发过程中踩过的坑、以及那些「看起来成功了实际没成功」的事情,写在了这篇文章里:

tbx:把一次远程支援压缩成一条命令

ESC