在Windows上,使用Chef确保删除用户环境变量,但不删除系统变量
我正在编写一个chef脚本来安装nvm for windows。我刚刚遇到了一个问题,系统最终为在Windows上,使用Chef确保删除用户环境变量,但不删除系统变量,windows,environment-variables,chef-infra,Windows,Environment Variables,Chef Infra,我正在编写一个chef脚本来安装nvm for windows。我刚刚遇到了一个问题,系统最终为NVM\u HOME 环境“NVM_HOME”do 行动:删除 结束 上述情况可能会消除这两种情况 如何修改chef脚本以确保保留系统变量,但删除用户变量(如果存在)?最后这样做了 [ “NVM_HOME”, “NVM_符号链接” ].每个do |键| 执行“确保nvm没有添加#{key}用户变量”do 命令“REG delete HKCU\\ENVICENT/F/V{key}” 仅当{regi
NVM\u HOME
环境“NVM_HOME”do
行动:删除
结束
上述情况可能会消除这两种情况
如何修改chef脚本以确保保留系统变量,但删除用户变量(如果存在)?最后这样做了
[
“NVM_HOME”,
“NVM_符号链接”
].每个do |键|
执行“确保nvm没有添加#{key}用户变量”do
命令“REG delete HKCU\\ENVICENT/F/V{key}”
仅当{registry\u key\u存在时?“HKCU\\Environment\\\\{key}”
结束
结束
可能不是最好的方法,但它运行:)如果用户环境变量是运行chef的用户而不是其他用户,则可以使用资源来确保删除值(未测试的示例):
如果您希望更改另一个用户变量,可以查看我认为您必须在powershell中创建一个小脚本,请参阅以获取起点。是,假设我可以进行类似于
REG delete HKCU\Environment/F/V FOOBAR
的工作,但不知道它是否内置,我误解了主厨文档我假设玩用户SSID和registry\u key
资源这是可行的,我需要针对KHU/。。。但这应该是可行的。是的,这是我唯一需要它的情况。然后注册表项将避免需要警卫。无论如何,将其添加为答案:)
registry_key "HKCU\\Environment" do
values [{:name => 'NVM_HOME'},{:name => 'NVM_SYMLINK'}]
action :delete
end