PowerShell_Scripts/Invoke-ViaAnsible.ps1

20 lines
767 B
PowerShell

[CmdletBinding()]param([string[]]$Command, [switch]$NotPowerShell, [string[]]$Remotes)
$script:ansible_cli=@('ansible')
if( (Test-Path './ansible.cfg') -or (Test-Path '/opt/ansible/hosts') -and (Test-Path '/opt/ansible/ssh_key_for_ansible') ) {
$ansible_cli += '-i', '/opt/ansible/hosts', '--private-key=/opt/ansible/ssh_key_for_ansible'
}
if( $Command ) {
$ansible_cli += '-a'
if( $NotPowerShell ) {
$ansible_cli += $(($Command -join '; ').Replace("'","\`$(printf '\x27')").Replace('"',"\`$(printf '\x22')"))
} else {
$ansible_cli += "pwsh -encodedcommand $(ConvertTo-Base64 $($Command -join '; '))"
}
}
$ansible_cli += $Remotes
$local:expr = $('& "'+$($ansible_cli -join '" "')+'"')
Write-Verbose $expr
Invoke-Expression $expr