Ejecución de github para Windows powershell en server remoto

Intento usar Ansible para automatizar alguna implementación en una máquina remota de Windows y tengo algunas dificultades para ejecutar commands de git en la máquina remota. Si estoy físicamente en una máquina remota, uso git a través de la herramienta de command-line posh-git proporcionada por el cliente de Github para Windows. Hice el ejecutable git disponible desde el powershell estándar, agregando

. (Resolve-Path "$env:LOCALAPPDATA\GitHub\shell.ps1") . $env:github_posh_git\profile.example.ps1 

a mi perfil en %USERPROFILE%\Documents\WindowsPowerShell\Profile.ps1 .

Cuando bash ejecutar commands de git en un script de powershell a través de Ansible, parece que el perfil no se "origina" (utilizando el lenguaje de Linux con el que estoy mucho más familiarizado) en la session remota. De acuerdo con estos documentos , hay un perfil para "Usuario actual, Todos los hosts" que se lee desde $Home\Documents\Profile.ps1 , pero encontrar el mismo file allí no parece resolver el problema.

¿Alguna idea de cómo configurar mi entorno de forma adecuada para poder ejecutar scripts de PowerShell que hacen reference al command Github posh-git git desde dentro de un script de powershell ejecutado por Ansible, que está utilizando un contenedor de Python en WinRM?

PowerShell no carga el perfil cuando usa la comunicación remota.

posh-git en realidad no agrega git a PowerShell, en su mayoría da un aviso personalizado en los repositorys de git y la finalización de tabs para los commands de git . La funcionalidad real de git es proporcionada por msysgit , por lo que hay un ejecutable git.exe en algún lado.

Si agrega la ruta (para mí es C:\Program Files (x86)\Git\bin ) a su PATH entorno PATH en el host remoto, o incluya la ruta completa a git en sus commands, debería funcionar; entonces, en lugar de git push , tal vez:

 & "${env:ProgramFiles(x86)}\Git\Bin\git.exe" push 

No es muy bonito, pero debería hacer el trabajo. También puedes hacer un alias:

 New-Alias -Name git -Value "${env:ProgramFiles(x86)}\Git\Bin\git.exe" git push 

Pero aún no puede cargar esto automáticamente sin el perfil, a less que cree una nueva configuration de session y cree un nuevo punto final de powershell, pero no estoy seguro de si Ansible puede usar eso. Podría intentar replace la configuration del punto final pnetworkingeterminado Microsoft.PowerShell pero eso parece una mala idea.

En lugar de tratar de confiar en un perfil, terminé simplemente llamando a la línea que configura git directamente en mi script powershell:

 function SetupGit () { Write-Host "Setting up powershell git access" if (Get-Command git -errorAction SilentlyContinue) { Write-Host "git is already accessible" return } . (Resolve-Path "$env:LOCALAPPDATA\GitHub\shell.ps1") if (-Not (Get-Command git -errorAction SilentlyContinue)) { Write-Host "Cannot find git command" Exit 1 } }