Este es un problema desagradable que estoy enfrentando. No se sorprenderá si tiene una solución simple, solo que me elude.
Tengo 2 archivos de proceso por lotes que debo convertir a scripts de PowerShell.
file1.bat
---------
echo %1
echo %2
echo %3
file2.bat %*
file2.bat
--------
echo %1
echo %2
echo %3
En la línea de comandos, invoco esto como C:> file1.bat uno dos tres La salida que veo es como se esperaba uno dos tres uno dos tres
(Esta es una muestra de código crudo)
Cuando convierto a Powershell, tengo
file1.ps1
---------
Write-Host "args[0] " $args[0]
Write-Host "args[1] " $args[1]
Write-Host "args[2] " $args[2]
. ./file2.ps1 $args
file2.ps1
---------
Write-Host "args[0] " $args[0]
Write-Host "args[1] " $args[1]
Write-Host "args[2] " $args[2]
When I invoke this on powershell command line, I get
$> & file1.ps1 one two three
args[0] one
args[1] two
args[2] three
args[0] one two three
args[1]
args[2]
Entiendo que esto se debe a que $ args utilizado en file1.ps es un System.Object [] en lugar de 3 cadenas.
Necesito una manera de pasar los $ args recibidos por file1.ps1 a file2.ps1, de la misma manera que se logra con% * en archivos .bat.
Me temo que la forma existente se romperá incluso si se trata de una llamada multifuncional, del mismo modo que es una llamada entre archivos en mi ejemplo.
Han intentado algunas combinaciones, pero nada funciona.
Amablemente ayuda. Lo apreciaría mucho.