PowerShell 技能连载 - 跨平台脚本开发

适用于 PowerShell 7.0 及以上版本(Windows / Linux / macOS)

PowerShell 7 是微软推出的跨平台版本,基于 .NET 构建,可以在 Windows、Linux 和 macOS 三个操作系统上运行。这为运维工程师带来了一个统一脚本语言的可能性——同一套 PowerShell 脚本理论上可以在不同平台上执行,减少了学习成本和维护负担。但现实中的跨平台开发远比”能跑起来”复杂得多。

不同操作系统在文件系统结构、路径规范、大小写敏感性、权限模型、包管理方式等方面存在显著差异。如果不做适配,一个在 Windows 上完美运行的脚本放到 Linux 上可能处处报错。比如路径分隔符的差异(\ vs /)、环境变量的读取方式、甚至某些 cmdlet 的可用性都会因平台而异。

本文将从平台检测与条件分支、路径与文件系统差异处理、跨平台工具函数库三个维度,介绍如何编写真正能在三大平台上稳定运行的 PowerShell 脚本。掌握这些技巧后,你可以将运维自动化脚本打包成跨平台模块,在混合环境中统一管理。

阅读更多

PowerShell 技能连载 - SSH 远程管理

适用于 PowerShell 7.0 及以上版本

传统的 PowerShell Remoting 基于 WinRM(Windows Remote Management)协议,虽然功能强大,但存在明显的平台限制——它只能在 Windows 环境中工作。在企业混合环境中,运维人员往往需要同时管理 Windows 和 Linux 服务器,WinRM 的局限性就成了一个棘手的问题。此外,WinRM 在防火墙策略严格的网络中配置繁琐,端口和认证方式也不够灵活。

PowerShell 7 引入了基于 SSH 的远程会话支持,彻底改变了这一局面。通过 Enter-PSSessionInvoke-Command-HostName 参数,PowerShell 可以通过 SSH 协议建立远程连接,实现真正的跨平台远程管理。这意味着你可以从 Windows 管理 Linux 服务器、从 Linux 管理 Windows 服务器,甚至可以在云环境和容器中使用统一的远程管理体验。

SSH Remoting 不仅能与现有的 SSH 基础设施无缝集成,还支持密钥认证、跳板机(ProxyJump)、多主机并行执行等高级场景。本文将介绍如何配置和使用 PowerShell SSH Remoting,以及在混合环境中的实战技巧。

阅读更多

PowerShell 技能连载 - WSL 集成与互操作

适用于 PowerShell 7.0 及以上版本

Windows Subsystem for Linux (WSL) 已经从一个实验性的兼容层发展为成熟的 Linux 运行环境。WSL2 基于真正的 Linux 内核,支持 systemd、Docker 以及绝大多数原生 Linux 应用。对于日常在 Windows 上工作的运维工程师和开发者来说,WSL 提供了一条低成本的 Linux 工具链接入路径——无需双系统,无需虚拟机管理程序的开销。

PowerShell 与 WSL 的互操作不仅限于简单的命令转发。借助 wsl 命令行工具、\\wsl$ 网络路径以及双向的进程调用机制,可以在一个脚本中自由混合 Windows 和 Linux 工具。例如,用 PowerShell 采集 Windows 事件日志,再通过管道传给 WSL 中的 awk 做文本分析;或者反过来,在 WSL 中编译项目后调用 PowerShell 部署到 Windows 服务。这种混合工作流在 DevOps 和跨平台自动化场景中尤为实用。

本文将从实例管理、跨平台数据交换和自动化部署三个维度,展示 PowerShell 与 WSL 深度集成的实战技巧。

阅读更多

PowerShell 技能连载 - SSH 远程管理

适用于 PowerShell 7.0 及以上版本(跨平台)

在传统的 Windows 环境中,PowerShell 远程管理主要依赖 WinRM(Windows Remote Management)协议和 Enter-PSSessionInvoke-Command 等 cmdlet。然而,WinRM 是 Windows 专属协议,无法在 Linux 或 macOS 上运行,这给跨平台运维带来了不小的障碍。

从 PowerShell 7.0 开始,PowerShell 正式支持基于 SSH 的远程连接。通过 SSH 传输层,你可以使用熟悉的 Enter-PSSessionInvoke-Command 连接到任何安装了 SSH 服务的远程主机,无论对方运行的是 Windows、Linux 还是 macOS。这让 PowerShell 真正成为了一门跨平台的运维语言。

本文将介绍如何配置 SSH 远程管理环境,以及如何使用 PowerShell 通过 SSH 执行远程命令、管理多台服务器。

阅读更多

PowerShell 技能连载 - WSL 集成操作

适用于 PowerShell 5.1 及以上版本(Windows),需要安装 WSL

Windows Subsystem for Linux (WSL) 让 Windows 和 Linux 无缝协作——在 Windows 上运行 Linux 工具链,同时享受 Windows 的图形界面和生态。PowerShell 可以通过 wsl 命令与 WSL 交互,调用 Linux 命令、管理 WSL 发行版、在两个环境之间传递数据。这种能力让运维人员可以在一个终端中同时使用 PowerShell 和 Bash 的优势。

本文将讲解 PowerShell 与 WSL 的集成操作技巧。

阅读更多

PowerShell 技能连载 - 跨平台 PowerShell 实践

适用于 PowerShell 7.0 及以上版本(跨平台)

PowerShell 7 的跨平台能力是一个里程碑式的变化——同一套脚本语言可以在 Windows、Linux 和 macOS 上运行。对于管理混合环境的运维团队来说,这意味着只需学习一种语言就能管理所有平台。但跨平台并非”写一次到处运行”那么简单,不同操作系统的路径格式、包管理器、服务管理和服务发现机制都有差异。

本文将讲解跨平台 PowerShell 脚本的最佳实践,包括平台检测、路径处理、包管理适配和实用案例。

阅读更多

PowerShell 技能连载 - SSH 远程管理

适用于 PowerShell 7.0 及以上版本(跨平台)

传统上,PowerShell 远程管理依赖 Windows 专属的 WinRM 协议和 Enter-PSSession 命令。但随着 PowerShell 7 的跨平台演进,以及混合云环境的普及,基于 SSH 的远程管理已成为官方推荐的新标准。SSH 不仅天然支持 Linux/macOS,还能在 Windows 上与 OpenSSH 无缝集成,实现真正的跨平台远程操作。

本文将从安装配置 OpenSSH 开始,逐步讲解如何通过 SSH 建立 PowerShell 远程会话、传输文件、执行远程命令,以及在生产环境中配置密钥认证和跳板机。

阅读更多

小米路由器 mini 与 OpenWRT

今天拿到小米路由器 mini ,准备对它刷入 OpenWRT 固件。这类操作通常都有些坑,所以将过程记录如下:

初始化

难度 ★★☆☆☆
陷阱 ★☆☆☆☆

小米路由器 mini 开箱以后,按照内附的纸质说明书对它进行简单的初始化,使得电脑可以通过它上网。这个过程是面向普通消费者的,所以过程不再赘述。

初始化完成后,路由器 WEB 管理界面中可能会提示有可升级的固件,在此可以忽略,因为我们下一步可能对它进行降级。

在路由器的 USB 口中插入一个格式化为 FAT32 的空白 U 盘,容量在 1GB 以上即可,最好是带指示灯的,这样可以看得到它的读写状态。首次插入 U 盘的时候,小米路由器会向 U 盘里写入十来兆的数据,要等 U 盘指示灯停止闪烁以后再进行后续的断电、刷机等操作比较保险。

用小米路由器的手机 APP(扫盒子上的二维码下载)将路由器和小米账户绑定。这步是打开 SSH 的基础。

固件降级

难度 ★★☆☆☆
陷阱 ★★★☆☆

为了打开 SSH 功能,我们需要刷入小米路由 mini 的开发版固件。注意,我们不仅不能刷入最新版的固件,相反,要对已有的固件降级。因为经过一系列实验,发现若使用高版本的小米路由器 mini 固件,在后续打开 SSH 操作的时候,会遇到黄灯闪烁 3 秒后变成了红灯的问题。

请自行搜索 0.6.40 版的 miwifi_r1cm_all_ace8a_0.6.40.bin 并下载,这个版本亲测可以用。官网的MiWiFi成长日志提供的 0.8.x 和 0.7.x 版都无法打开 SSH。

然后在路由器的 WEB 控制台的路由设置中手动刷入上述 .bin 文件。按照提示等待 5-8 分钟,就可以再次进入路由器的 WEB 控制台了。可以在 WEB 控制台中确认降级成功。

打开 SSH

难度 ★★★☆☆
陷阱 ★★☆☆☆

打开 SSH 意味着失去保修。不过准备继续折腾的人早已做好放弃保修的准备了。

访问MiWiFi – 小米路由器官网,点击“开放/开启 SSH 工具/下载工具包”,并记下 root 密码。注意这将下载一个专属的 miwifi_ssh.bin 文件,同款不同机器是不通用的。

把下载下来的 miwifi_ssh.bin 复制到刚才的 U 盘中。断电,插入 U 盘,按住复位键,通电,在黄色指示灯闪烁的时候,放开复位键,等待….
当指示灯变成 蓝色长亮的时候,说明我们获取到 root 权限并启动 SSH 服务了。

刷入 PandoraBox

难度 ★★★☆☆
陷阱 ★★★☆☆

访问 Index of /PandoraBox/Xiaomi-Mini-R1CM/,目前 stable 目录下没东西,只有 testing 目录下有东西,也就是只有测试版。

下载最新的 PandoraBox-ralink-mt7620-xiaomi-mini-squashfs-sysupgrade-r460-20150216.bin(还有个文件名不带 mt7620 字样的固件不知道是做什么的)。

用 XSHELL、SecureCRT、PUTTY 等 SSH 客户端,以及 WinSCP 文件传输器(以 SCP 协议)以前面记录的 root 密码登录 192.168.31.1。

用 WinSCP 把下载的 PandoraBox 固件上传到小米路由 mini 的 /tmp/ 目录下,顺便改个短点的名字 PandoraBox.bin

在 SSH 客户端中执行以下命令开始刷入 PandoraBox 固件:

mtd -r write /tmp/PandoraBox.bin firmware

注意,如果遇到 Could not open mtd device: firmware 提示,请按前面的步骤进行固件降级。

等路由重启后,可以搜索到信号PandoraBox_XXXX,没有密码,连上去后进入192.168.1.1,密码 admin,之后就能看到可爱的 OpenWRT 界面了。

刷 u-boot

刷 u-boot 应该在刷 PandoraBox 步骤之前。刷 PandoraBox u-boot 不是必须的,但是刷了可以方便后续的上传固件,不用一直SS H 操作。

u-boot是一种普遍用于嵌入式系统中的Bootloader,Bootloader是在操作系统运行之前执行的一小段程序。他可以用来恢复小米路由器的固件,可以说只要刷了uboot,你的路由器基本上刷不死了。

  • 小米 u-boot 的用法是将固件命名为 miwifi.bin,存在 FAT32 U 盘根目录中,插入路由器,按住 reset 键接通电源,待黄灯闪烁之后松开。
  • PandoraBox u-boot 的用法是将 PC 网卡配置成 192.168.1.2/255.255.255.0/192.168.1.1,按住 reset 键接通电源,待黄灯闪烁之后松开,用 PC 浏览器打开 http://192.168.1.1,即可通过上传 PandoraBox 的固件来刷。

注意,小米官方的 u-boot 和 PandoraBox 的不同。刷了 PandoraBox 的固件之后,不能通过 WEB 方式刷小米固件,但可以通过 WEB 方式刷小米 u-boot,然后通过小米 u-boot 可以刷小米固件。这样来实现从 PandoraBox 刷回原产小米固件。

主要攻略如下:

小米路由器mini折腾之刷不死uboot篇 - 老高的技术博客
小米mini使用不死uboot刷宽带宝教程 - 交流讨论 - 宽带宝论坛 - Powered by Discuz!

参考

PowerShell 技术 QQ 群