如何在当前Puppet会话中设置Windows环境路径?

时间:2016-11-08 18:45:32

标签: windows git puppet chocolatey

我正在尝试安装git并在同一个puppet脚本中使用它

package { 'git':
  ensure => latest,
  provider => 'chocolatey',
}
vcsrepo { 'C:/':
  provider => git,
  source => 'github etc...',
}

但是,我得到了:

  

提供者git在此主机上无法正常运行

环境变量中包含正确的路径,这使我认为错误只是因为环境变量没有更新。

如果我在命令行上使用refreshenvset "PATH=%PATH%;C:\Program Files\Git\cmd"或者我重新启动命令提示符,则错误消失,但是是否可以在同一个puppet脚本中更新它们而无需手动介入

我尝试将以下内容添加到.pp文件中(当然一次一个):

#1
windows_env { 'PATH=C:\Program Files\Git\cmd': }

#2 (I've also tried different variations of quotes)
exec { 'temporary env var':
  path => 'C:/Windows/System32',
  command => 'cmd.exe /c "set \"PATH=$PATH%;C:\\Program Files\\Git\\cmd\""',
}

#3
exec { 'C:/ProgramData/chocolatey/bin/refreshEnv.cmd': }

我想你可以说我的问题是Puppet agent: provider git is not functional on this host的延伸。

1 个答案:

答案 0 :(得分:0)

我找到了一个允许木偶脚本完全运行的解决方法。

set "PATH=%PATH%;C:\Program Files\Git\cmd"之前在命令行中运行puppet apply file.pp将git的未来位置设置为仅适用于当前命令提示符的环境变量set,而不是setx )。这样,当打开另一个命令提示符时,一次性路径消失了,但是从实际的git安装中添加了相同的路径。