gpt4 book ai didi

powershell - 如何在安装 Chocolatey 后刷新 PowerShell session 的环境而无需打开新 session

转载 作者:行者123 更新时间:2023-12-04 01:55:52 26 4
gpt4 key购买 nike

我正在编写用于将 GitHub 源代码克隆到本地机器的自动化脚本。
在我的脚本中安装 Git 后我失败了,它要求关闭/打开 powershell。
所以我无法在安装 Git 后自动克隆代码。

这是我的代码:

iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
choco install -y git
refreshenv
Start-Sleep -Seconds 15

git clone --mirror https://${username}:${password}@$hostname/${username}/$Projectname.git D:\GitTemp -q 2>&1 | %{ "$_" }

错误:
git : The term 'git' is not recognized as the name of a cmdlet, 
function, script file, or operable program.
Check the spelling of the name, or if a path was included,
verify that the path is correct and try again.

请让我在不退出的情况下重新启动 PowerShell 时应该放什么?

最佳答案

你有一个引导问题:

  • refreshenv ( Update-SessionEnvironment 的别名)通常是用于在 choco install ... 之后使用环境变量更改更新当前 session 的正确命令命令。
  • 然而,在安装 Chocolatey 本身之后,refreshenv/Update-SessionEnvironment本身仅在 future 的 PowerShell session 中可用,因为加载这些命令是通过添加到配置文件 $PROFILE 的代码发生的。 , 基于环境变量 $env:ChocolateyInstall .

  • 也就是说,当 $PROFILE 时,您应该能够模仿 Chocolatey 所做的事情。来源在以后的 session 中,以便能够使用 refreshenv/ Update-SessionEnvironment立即,在安装 Chocolatey 后立即:
    iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

    choco install -y git

    # Make `refreshenv` available right away, by defining the $env:ChocolateyInstall
    # variable and importing the Chocolatey profile module.
    # Note: Using `. $PROFILE` instead *may* work, but isn't guaranteed to.
    $env:ChocolateyInstall = Convert-Path "$((Get-Command choco).Path)\..\.."
    Import-Module "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1"

    # refreshenv is now an alias for Update-SessionEnvironment
    # (rather than invoking refreshenv.cmd, the *batch file* for use with cmd.exe)
    # This should make git.exe accessible via the refreshed $env:PATH, so that it
    # can be called by name only.
    refreshenv

    # Verify that git can be called.
    git --version
    注意:原解决方案使用 . $PROFILE而不是 Import-Module ...加载 Chocolatey 配置文件,依赖 Chocolatey 更新 $PROFILE已经到了那个时候。然而, ferventcoder指出 $PROFILE的本次更新并不总是发生,所以不能依赖。

    关于powershell - 如何在安装 Chocolatey 后刷新 PowerShell session 的环境而无需打开新 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46758437/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com