我在安装Chocolatey 0.9.8.28后遇到了这个问题。我尝试了这里列出的大部分解决方案,但是在Powershell命令行中无法识别'bower -v'让我感到有些奇怪,因为Chocolatey的安装“全部都是”关于Powershell的。最后,我成功地通过设置路径使Powershell能够找到更新的PATH变量设置,但我需要帮助理解为什么以及如何做到这一点,下面是我提供的解释:
在最初使用Powershell失败后,我能够进入标准的DOS命令行(而不是在Powershell中使用cmd /c),并成功执行了所有上面讨论过的路径设置的变化,并且在DOS命令行中能够看到bower和bower命令被识别。而且cmd窗口显示了完整的更新路径(C:\ProgramData\chocolatey\lib\nodejs.commandline.0.10.34\tools)- 注意版本号可能会与尊敬的KimchiMan的列表不同。
这个路径在关闭和打开新的DOS命令行窗口时持续存在,但在任何Powershell窗口中都没有被识别(从未)。
然后我发现了以下相关讨论:设置Powershell路径设置。
这指出了Powershell在启动时识别HKLM路径设置版本。并且可以将路径设置为会话(非持久性)或注册表(持久性)中的任一位置。以下是直接从该讨论中提取的。
这些命令可以为PowerShell会话临时设置路径:
$env:Path = 'New path'
[System.Environment]::SetEnvironmentVariable('Path', 'New Path', 'Process')
这些命令可以永久地为所有新的 Powershell 会话设置 PATH:
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Session Manager\Environment' -Name 'Path' -Value 'New Path'
[System.Environment]::SetEnvironmentVariable('Path', 'New Path', 'Machine')
但我之前尝试通过编程设置注册表设置,我不认为一两行的 PowerShell 脚本就能胜任这项任务。 所以我甚至没有尝试 这个选项。
相反,我去了控制面板/系统控制台,并通过“环境变量”对话框更改了路径。 我注意到,尽管 DOS 会话以管理员身份运行,但我在 DOS 命令行中使用“set PATH”更改路径所做的所有努力都已在 Windows 会话期间生效,但新的路径条目尚未持久保存到“环境变量/注册表”中。
在我通过控制面板进行此更改后,“chocolatey”工具文件夹中 bower 的更新路径(以及所有后续工具安装)被永久设置,并且无论是在 DOS 命令行还是在 Powershell 命令行中都可以使用 bower。
希望这有所帮助...