Questo è un brutto problema che sto affrontando. Non sarei sorpreso se ha una soluzione semplice, solo che mi sfugge.
Ho 2 file batch che devo convertire in script PowerShell.
file1.bat
---------
echo %1
echo %2
echo %3
file2.bat %*
file2.bat
--------
echo %1
echo %2
echo %3
Nella riga di comando, invoco questo come C:> file1.bat uno due tre L'uscita vedo è come previsto uno due tre uno due tre
(Questo è un esempio di codice grezzo)
Quando mi converto al Powershell, ho
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]
Capisco questo perché $ args utilizzati in file1.ps è un System.Object [] invece di 3 stringhe.
Ho bisogno di un modo per passare i $ arg ricevuti da file1.ps1 a file2.ps1, più o meno allo stesso modo ottenuto da% * nei file .bat.
Ho paura, il modo esistente si interromperà anche se è una chiamata cross-function, proprio come nel mio esempio è una chiamata cross-file.
Ho provato alcune combinazioni, ma niente funziona.
Gentile aiuto. Lo apprezzerebbe molto.