Конечно, при запуске внешнего содержимого из PowerShell цитирование является жизненно важной частью реализации params. В топи есть блоги / статьи / документы c.
У меня не было необходимости делать это Git, но молча, но посмотрите, предоставляет ли какой-либо из них edification.
как загрузить и установить git клиент для окна, используя
# run installer
$git_install_inf = "<install inf file>"
$install_args = "/SP- /VERYSILENT /SUPPRESSMSGBOXES /NOCANCEL /NORESTART /CLOSEAPPLICATIONS /RESTARTAPPLICATIONS /LOADINF=""$git_install_inf"""
Start-Process -FilePath $installer -ArgumentList $install_args -Wait
git -powershell-silent-install / git -silent-uninstall.ps1
Я немного подправил то, что вы опубликовали, из-за цитирования и попытался разобраться, возможно, просто возможно, это было то, что catch22 для вашего случая использования.
Примечание:
Эти изменения не проверены, так как у меня уже установлено и настроено Git, как мне нужно, Я не хотел связываться с моей средой для проверки.
Я немного подправил то, что вы опубликовали, из-за цитирования ...
about_Quoting
Цитата PowerShell
... и пытался потенциально иметь дело с, может быть, просто возможно, это было на catch22 для вашего случая использования. Кроме того, я дернул материал Write-Host, так как вывод на экран - по умолчанию PowerShell. Хорошо, что и исторически Write-Host просто не рекомендуется (даже отцом Monad / PowerShell) против Write-Output до PowerShell v5.
Источники:
Write-Host считается вредным
С PowerShell v5 Write-Host больше не "убивает щенков"
Информация о записи
Примечание:
Эти изменения не проверены, поскольку у меня уже установлено Git и настроенный так, как мне нужно, я не хотел связываться с моей средой для проверки.
$installerFilename = ".\Git-$($versionToInstall)-64-bit.exe"
$installer = Resolve-Path $installerFilename
"Running Git installer: $installer"
$optionsFile = Resolve-Path '.\install-defaults.txt'
$logFile = "$env:TEMP\Git-install-$($timestamp).log"
$commandLineOptions = "/SP- /VERYSILENT /SUPPRESSMSGBOXES /FORCECLOSEAPPLICATIONS /LOADINF=' $optionsFile /LOG= $logFile'"
"With options: $commandLineOptions"
<#
Use this option
Start-Process -Wait -FilePath $installer -ArgumentList $commandLineOptions
or
PowerShell.exe -Command "& $installer $commandLineOptions"
#>
## Configure git with some defaults
### Set git as a command alias
if (!(Test-Path -Path 'alias:git'))
{New-Item -path 'alias:git' -value 'C:\Program Files\Git\bin\git.exe'}
### Invoke git commands that set defaults for user.
git config --global credential.helper wincred
git config --global push.default simple
git config --global core.autocrlf true***
'Git installer done.'