ローカルマシンに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 ...
_コマンドの後に環境変数の変更で現在のセッションを更新するために使用する正しいコマンドです。
ただし、-Chocolatey自体をインストールした直後、refreshenv
/_Update-SessionEnvironment
_自体はfuture PowerShellセッションでのみ使用できます。これらのコマンドのロードは、プロファイル_$PROFILE
_、環境変数_$env:ChocolateyInstall
_に基づく。
そうは言っても、インストール直後にrefreshenv
/_$PROFILE
_を使用できるようにするために、将来のセッションで_Update-SessionEnvironment
_が供給されたときにChocolateyが何を行うかemulateできるはずです。チョコレート:
_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.
$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
_
注:元のソリューションでは、Chocolateyプロファイルをロードするために_. $PROFILE
_ではなく_Import-Module ...
_を使用し、Chocolateyがその時点ですでに_$PROFILE
_を更新していることに依存していました。ただし、 ferventcoder は、この_$PROFILE
_の更新が発生しないことを示していますalwaysは発生しないため、信頼できません。
pdate-SessionEnvironment を試して使用できます。
Chocolateyパッケージのインストール中に発生した可能性のある環境変数の変更で現在のPowerShellセッションの環境変数を更新します。
その変更がチョコレートコールの後も有効かどうかをテストします。
そうでない場合、1つの簡単な回避策は、少なくともgit
を呼び出すために絶対パスを使用することです。
To PowershellからGitを呼び出す :
new-item -path alias:git -value 'C:\Program Files\Git\bin\git.exe'
その後、試すことができます:
git clone --mirror https://${username}:${password}@$hostname/${username}/$Projectname.git D:\GitTemp -q 2>&1 | %{ "$_" }