Ho uno script V2 test di PowerShell che assomiglia a questo:
function test_args()
{
Write-Host "here's arg 0: $args[0]"
Write-Host "here's arg 1: $args[1]"
}
test_args
Se chiamo questo dal prompt dei comandi PowerShell ottengo questo sullo schermo:
here's arg[0]: [0]
here's arg[1]: [1]
Non proprio quello che volevo. Sembra che io debba copiare $ args [0] e $ args [1] in nuove variabili nello script prima che io possa usarli? Se lo faccio posso accedere alle cose bene.
C'è un modo per accedere agli $ arg indicizzati nel mio codice? Ho provato a usare le parentesi graffe intorno a loro in vari modi, ma senza fortuna.
Alla fine passerò ai parametri con nome, ma la sceneggiatura su cui sto lavorando (non questa demo) è una porta dritta di un file batch.
Grazie Keith-- Ho cambiato il mio snippet per correggere il mio errore di battitura quando ho tradotto dal mio editor in SO. Credo che la mia domanda è, devo passare $ arg [0] e [1] per test_args come parametri, o la funzione stessa avrà accesso alla matrice $ args? – larryq
Le funzioni hanno sempre accesso a $ args. Conterrà qualsiasi argomento che non è mappato su un parametro funzione definito. Se non ci sono argomenti o tutti gli argomenti eseguono il mapping dei parametri di funzione, ad es. 'function foo ($ param1, $ param2) {}' quindi $ args sarà un array vuoto. –
A volte devo usare 'Out-String' per ottenere l'output di una sotto-espressione da visualizzare come desiderato ... come quando si lavora con una tabella hash. Esempio, si assume che l'argomento 1 sia un hashtable: "Write-Host": ecco arg 1: $ ($ args [1] | Out-String) "' – VertigoRay