[英]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.