我有这个cmdlet(?)的简短组合,它通过计算我得到的返回数来说明,但只有在$ Env:Path中安装了Git时它才有效。
我想使用git rev-parse --short HEAD
,但请检查它是否预先安装在PS脚本中。
# $gitInstalled = "git" | Get-Command -CommandType Application -ErrorAction SilentlyContinue | measure;
# Write-Host $count.Count;
我意识到它本身几乎可以回答这个问题,但是我想知道是否还有另一种方式,更有效或更广泛地覆盖,以确定是否安装了Git?
编辑:所以我们可以将命令缩短为
# $gitInstalled = Get-Command -ErrorAction SilentlyContinue git
答案 0 :(得分:3)
您可以查看该命令是否可用:
$(document).ready(..)
这也恰好涵盖了额外的问题,“git in $ env:path?”
答案 1 :(得分:1)
您可以通过查看Uninstall keys:
来查询注册表中已安装的程序Function Test-IsGitInstalled
{
$32BitPrograms = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*
$64BitPrograms = Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*
$programsWithGitInName = ($32BitPrograms + $64BitPrograms) | Where-Object { $null -ne $_.DisplayName -and $_.Displayname.Contains('Git') }
$isGitInstalled = $null -ne $programsWithGitInName
return $isGitInstalled
}
或者作为一个单行:
$isGitInstalled = $null -ne ( (Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*) + (Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*) | Where-Object { $null -ne $_.DisplayName -and $_.Displayname.Contains('Git') })