试图找出是否通过Powershell安装Git?

时间:2017-10-14 11:09:35

标签: git powershell

我有这个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

2 个答案:

答案 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') })