如何在 Windows 上卸载 Terraform
Terraform 只是一个命令行程序,卸载本身很快,真正要紧的文件都不在它那儿,配置、状态文件和每个项目的 .terraform 文件夹在你的项目目录里,terraform login 存下的令牌在用户目录里。动安装之前先把项目留好,还在管理的资源先备份状态。这份指南覆盖用 Hashicorp.Terraform winget 包按用户安装的 Terraform,winget 把它当作便携包管理。
先让命令跑完
正在跑的 terraform plan 或 terraform apply 等它结束,半路停下可能会留下状态锁。Terraform 没有后台进程、托盘图标或启动项,没有别的要退出。
移除应用
winget 便携包没有单独的卸载器,由 winget 来删:
winget uninstall --id Hashicorp.Terraform
它也会出现在「设置 › 应用 › 已安装的应用」里,在那里点卸载效果一样。
数据分别在哪里
| 位置 | 里面是什么 | 如何处理 |
|---|---|---|
%LOCALAPPDATA%\Microsoft\WinGet\Packages\Hashicorp.Terraform_Microsoft.Winget.Source_8wekyb3d8bbwe |
terraform.exe 程序 |
卸载时会删 |
%APPDATA%\terraform.d |
命令行数据,terraform login 会把 API 令牌存在这里的 credentials.tfrc.json |
以后还装就留着,想清掉已存的令牌就删 |
你的项目文件夹,连同 .terraform 和 .terraform.lock.hcl |
每个项目的配置、provider 和锁文件 | 留着,这是你的东西,不属于程序 |
命令行配置和凭据放在哪里,HashiCorp 在 CLI 配置文档 里有说明。
检查结果
Get-Command terraform -ErrorAction SilentlyContinue
winget list --id Hashicorp.Terraform
Test-Path "$env:LOCALAPPDATA\Microsoft\WinGet\Packages\Hashicorp.Terraform_Microsoft.Winget.Source_8wekyb3d8bbwe"
Test-Path "$env:APPDATA\terraform.d"
Get-Command确认查询成功且没有匹配输出,说明 PATH 里已经没有terraform,有结果说明别处还装着另一份,看它给出的路径就知道是哪一份。winget list正常完成且没有匹配,才说明包记录已经没了。- 第一条
Test-Path返回False,说明包目录已经没了,返回True说明那里还有文件。 Test-Path "$env:APPDATA\terraform.d"返回True,说明命令行数据和存过的令牌都还在,只要你没有自己删掉,这就是正常的。
用 winget 安装时
对便携包,winget 文档里有 winget uninstall --purge,会把包目录里的东西连同安装后新写进去的文件一起删掉,它不会动 %APPDATA%\terraform.d,也不会动你的项目。
账号
卸载不会吊销 terraform login 存下的令牌,想让它彻底失效,除了删掉 credentials.tfrc.json,还要去 HCP Terraform 或 Terraform Enterprise 的账号设置里把它吊销。
Mole 会列出什么
对作为 winget 便携包安装的 Terraform:
- Mole 通过 winget 自己的卸载来移除这个包,包目录随之删除。
%APPDATA%\terraform.d会列出,但默认不勾选,里面可能有存过的令牌。- 项目文件夹不会列出。
这次检查覆盖了什么
测试于 2026 年 9 月 28 日,Terraform 1.16.2,通过 winget 作为便携包按用户安装。这次把 %APPDATA%\terraform.d 勾上并删掉了。没有测试:terraform login、命令行配置文件,以及下载过 provider 的项目。
