如何在 Windows 上卸载 Azure CLI
Azure CLI 把登录令牌缓存、账号设置和你装的扩展放在用户目录下的一个文件夹里,卸载器不会碰它。这份指南覆盖用 Microsoft.AzureCLI winget 包按机器安装的 Azure CLI。
先退出正在用 az 的窗口
关掉运行 az 命令的终端。卸载前在任务管理器(Ctrl+Shift+Esc)里确认没有 az.exe,不过它一般命令跑完就自己退出了。
用自带的卸载器移除应用
打开「设置 › 应用 › 已安装的应用」,找到 Microsoft Azure CLI,选择卸载,或者运行:
winget uninstall --id Microsoft.AzureCLI
数据分别在哪里
| 位置 | 里面是什么 | 如何处理 |
|---|---|---|
Program Files\Microsoft SDKs\Azure |
az.exe 本体和它自带的 Python 运行时 |
卸载器会删掉,可能留下一个空的 Program Files\Microsoft SDKs,那是微软其他 SDK 共用的目录,不用动 |
%USERPROFILE%\.azure |
登录令牌缓存、账号设置,以及用 az extension add 装的扩展,微软文档 里写的就是 CLI 自己的这个数据目录 |
卸载器不会动,可能重装的话先备份,不再需要这台机器上的这些凭据就自己删 |
这次测试没跑过 az login 也没装过扩展,%USERPROFILE%\.azure 没有生成过,也就没法检查。
检查结果
卸载完成后运行下面几条只读命令,最好开个新终端窗口:
az --version
winget list --id Microsoft.AzureCLI
Test-Path "$env:ProgramFiles\Microsoft SDKs\Azure"
Test-Path "$env:USERPROFILE\.azure"
az --version报「无法识别」,说明 Azure CLI 已经从 PATH 里没了;打印出版本号,说明卸载没完成,或者机器上还有另一个安装。winget list正常完成且没有匹配,才说明包记录已经没了;列出一行,说明卸载没完成。Test-Path "$env:ProgramFiles\Microsoft SDKs\Azure"返回False,说明程序目录已经没了;返回True,说明那里还有文件,或者只是个空文件夹。Test-Path "$env:USERPROFILE\.azure"返回True,说明令牌缓存和设置还在,如果别的地方还在用 Azure,先备份再删。
用 winget 安装时
winget uninstall 运行的是「设置 › 应用」用的同一个 MSI 卸载器,删的是同一批程序文件,不会动 %USERPROFILE%\.azure。
账号与凭据
卸载不会让你在 Azure 那边退出登录,也不会吊销本地缓存的令牌。微软自己的说法是不打算重装的话,想清掉缓存的登录状态就自己删 %USERPROFILE%\.azure\msal_token_cache.bin(旧安装可能是 .json)。
Mole 会列出什么
对按机器安装的 winget 版 Azure CLI,卸载审查列表是空的:MSI 卸载器自己删掉了 Program Files\Microsoft SDKs\Azure、机器 PATH 条目和它的两个注册表键,没有什么留给 Mole 处理。Mole 也不会单独列出程序目录这一行,因为安装程序登记时没写安装位置;想确认 Program Files\Microsoft SDKs\Azure 是不是真的没了,自己去看一眼。这次测试留下了一个空的 Program Files\Microsoft SDKs 目录,因为这个共用的上级目录可能还有别的产品在用,没别的东西在用就自己删掉。%USERPROFILE%\.azure 不管怎样都不在这张列表里。
这次检查覆盖了什么
测试的是 x64 MSI 版 Azure CLI 2.90.0(这款没有 arm64 包),按机器安装,提权环境。测试全程没有登录过,也没有装过扩展,所以卸载一个缓存过令牌或装过扩展的安装没有测试到。
