Post

升级传统CMD为PowerShell 7+Oh My Posh

摘要:Windows 默认的 CMD(命令提示符)和 Windows PowerShell 5.1 在现代开发场景下显得笨重且功能单一。本文将带你从零开始,把 Windows 命令行环境全面升级为最新的 PowerShell 7,并结合 Windows Terminal 与 Oh My Posh,打

先搞技术 阅读 1 点赞 0 评论 0

摘要:Windows 默认的 CMD(命令提示符)和 Windows PowerShell 5.1 在现代开发场景下显得笨重且功能单一。本文将带你从零开始,把 Windows 命令行环境全面升级为最新的 PowerShell 7,并结合 Windows TerminalOh My Posh,打造一个兼具极致颜值与高效生产力的现代终端。


一、为什么要告别 CMD?

长期以来,许多 Windows 开发者习惯按 Win + R 键输入 cmd 来运行命令行,但传统 CMD 存在以下固有缺陷:

  1. 单调的文本流架构:CMD 基于纯文本字符串处理,无法进行高效的数据过滤与对象操作。

  2. 已停止功能更新:微软早在多年前就停止了 CMD 的新功能开发,仅作兼容性保留。

  3. 缺少现代终端支持:不支持真彩色渐变、自定义图标和丰富的提示符(Prompt)插件。

相比之下,基于 .NET 构建的 PowerShell 7(pwsh) 拥有以下优势:

  • 真正的面向对象:命令管道传输的是结构化的 .NET 对象,而非纯文本。

  • 跨平台与高性能:启动迅速,毫秒级响应,支持并行处理。

  • 丰富的插件生态:支持 PSReadLine 智能补全、Oh My Posh 提示符等高级功能。

关于 Windows PowerShell (5.1) 与 PowerShell 7 (pwsh) Windows 预装的“Windows PowerShell 5.1”基于旧版 .NET Framework,微软官方已明确建议升级到基于最新 .NET Core 的 PowerShell 7


二、准备工作:安装最新版 PowerShell 7

可以通过 Windows 官方包管理器 winget 一键安装 PowerShell 7:

winget install Microsoft.PowerShell

安装完成后,在 Windows Terminal 的配置文件列表中,将会出现一个带有黑/蓝色方框图标的 PowerShell 项目(对应 pwsh.exe)。


三、关键前置步骤:安装极客字体(Nerd Font)

常见坑点:图标乱码(“”或方框/菱形) Oh My Posh 主题使用了大量的特殊图形符号(如 Git 分支、家目录图标、提示符连接符等)。这些符号位于 Unicode 的私有保留区(PUA),常规系统字体(如 Consolas)无法显示。必须使用支持 Nerd Font 的字体。

推荐安装官方优化的 MesloLGS NF 字体。

1. PowerShell 自动安装指令

在 PowerShell 7 中运行以下自动化安装逻辑(或使用 oh-my-posh font install 命令选择 Meslo):

# 创建字体目录并下载 MesloLGS NF 字体家族
$fontDir = "$env:LOCALAPPDATA\Microsoft\Windows\Fonts"
if (-not (Test-Path $fontDir)) { New-Item -ItemType Directory -Path $fontDir -Force }
​
$fonts = @(
    "MesloLGS NF Regular.ttf",
    "MesloLGS NF Bold.ttf",
    "MesloLGS NF Italic.ttf",
    "MesloLGS NF Bold Italic.ttf"
)
​
foreach ($font in $fonts) {
    $url = "https://github.com/romkatv/powerlevel10k-media/raw/master/$([uri]::EscapeDataString($font))"
    $dest = Join-Path $fontDir $font
    Invoke-WebRequest -Uri $url -OutFile $dest -UseBasicParsing
    
    # 注册到当前用户字体库
    Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" -Name "$font (TrueType)" -Value $dest
}

2. 在 Windows Terminal 中应用字体

  1. Ctrl + , 打开 Windows Terminal 设置

  2. 选择 配置文件 \rightarrow 默认值 \rightarrow 外观

  3. 字体 (Font face) 修改为:MesloLGS NF

  4. 点击右下角 保存


四、安装与配置 Oh My Posh 主题

1. 安装 Oh My Posh

winget install JanDeDobbeleer.OhMyPosh -s winget

2. 下载并配置主题(以 bubblesextra 为例)

创建本地主题存储目录并下载 bubblesextra 主题文件:

# 创建主题保存路径
$themePath = "$env:LOCALAPPDATA\oh-my-posh\themes"
if (-not (Test-Path $themePath)) { New-Item -ItemType Directory -Path $themePath -Force }
​
# 下载 bubblesextra 主题
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/bubblesextra.omp.json" -OutFile "$themePath\bubblesextra.omp.json"

3. 配置 PowerShell Profile 开机自启

编辑 PowerShell 7 的配置文件(配置文件路径通常为 D:\Documents\PowerShell\Microsoft.PowerShell_profile.ps1):

# 打开配置文件
notepad $PROFILE

在文件中添加以下初始化代码:

# Oh My Posh 自动加载 bubblesextra 主题
oh-my-posh init pwsh --config "$env:LOCALAPPDATA\oh-my-posh\themes\bubblesextra.omp.json" --eval | Invoke-Expression

保存文件后,在终端中运行 . $PROFILE 重新加载配置,即可看到气泡胶囊风格的命令行提示符。


五、优化 Windows Terminal 系统设置

为了获得最纯粹的 PowerShell 7 体验,建议进一步优化 Windows Terminal:

1. 将 PowerShell 7 设为默认

设置 \rightarrow 启动 \rightarrow 默认配置文件 中,选择最新的 PowerShell

2. 将 Windows Terminal 设为系统全局终端

设置 \rightarrow 启动 \rightarrow 默认终端应用程序 中,选择 Windows Terminal。从此以后,不管是从哪里调用命令行,系统都会默认通过 Windows Terminal 打开 PowerShell 7。

3. 隐藏旧版

CMD 和 Windows PowerShell 配置文件

为了防止在 + 号下拉列表中误选:

  1. 点击左侧配置文件菜单中的 Windows PowerShell(旧版)和 命令提示符

  2. “从下拉菜单中隐藏” 开关设置为

  3. 点击 保存


六、总结与最终效果

通过本文的步骤,你已经成功完成了以下改造:

  • 废弃古老的 CMD,全面拥抱跨平台、高性能的 PowerShell 7

  • 解决了图标乱码问题,正确配置了 MesloLGS NF 极客字体。

  • 启用了 Oh My Poshbubblesextra 动态主题,实时掌握 Git 分支、命令运行成功率与耗时。

  • 将 Windows Terminal 设为了系统默认终端并隐藏了冗余选项。

告别黑框框,开启高效且优雅的 Windows 命令行开发之旅吧!

评论