繁体   English   中英

使用 Chef 确保删除用户环境变量而不是 Windows 上的系统变量

[英]Use Chef to ensure a user environment variable is deleted but not a system variable on Windows

我正在编写一个厨师脚本来为 Windows 安装 nvm。 我刚刚遇到一个问题,系统以NVM_HOME的用户和系统变量NVM_HOME

env 'NVM_HOME' do action :delete end

以上可能会删除两者

如何修改我的厨师脚本以确保保留系统变量但删除用户变量(如果存在)?

如果用户环境变量是运行厨师的用户而不是其他用户,您可以使用registry_key资源来确保删除这些值(未经测试的示例):

registry_key "HKCU\\Environment" do
  values [{:name => 'NVM_HOME'},{:name => 'NVM_SYMLINK'}]
  action :delete
end

如果您想更改另一个用户变量,您可以查看此答案

最后做了这个

[ 'NVM_HOME', 'NVM_SYMLINK' ].each do |key| execute "ensure nvm has not added #{key} user variables" do command "REG delete HKCU\\\\Environment /F /V #{key}" only_if { registry_key_exists? "HKCU\\\\Environment\\\\#{key}" } end end

可能不是最好的方法,但它运行了:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM