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

How do I set Windows environment paths in current Puppet session?

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

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

但是,我得到:

Provider git is not functional on this host

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

如果我在命令行上使用 refreshenvset "PATH=%PATH%;C:\Program Files\Git\cmd" 或者如果我重新启动命令提示符,错误就会消失,但是 有没有办法同时更新它们无需人工干预的人偶脚本?

我已经尝试将以下内容添加到 .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 脚本完全 运行。

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

的实际安装中添加了相同的路径