Ho notato che stai utilizzando un "flusso di lavoro" nell'esempio di un parametro [ref]. Per semplicità, chiamiamola una "funzione" e torna a "flusso di lavoro" più tardi.
ci sono tre cose che dovete cambiare nel codice:
- Quando si passa un parametro [ref] di funzionare, è necessario racchiudere il parametro tra parentesi().
- Quando si utilizza un parametro [ref] all'interno di una funzione, fare riferimento a $ variabile.valore
- Rimuovere il tipo [stringa] dalla definizione del parametro. Può essere una [stringa] o [ref], ma non entrambi.
Ecco il codice che funziona:
function Test
{
Param([Parameter(Mandatory=$true)][ref]$someString)
write-verbose $someString.value -Verbose
$someString.value = "this is the new string"
}
cls
$someString = "hi"
Test -someString ([ref]$someString)
write-host $someString
Per quanto riguarda i "flussi di lavoro". Sono molto limitati, leggi PowerShell Workflows: Restrictions. In particolare, non è possibile richiamare un metodo su un oggetto all'interno del flusso di lavoro. Questo si romperà la linea:
$someString.value = "this is the new string"
Non credo che l'utilizzo di [REF] parametri in un flusso di lavoro è pratico, a causa delle restrizioni del flusso di lavoro.
fonte
2015-04-13 01:45:37
Scriverete un'altra risposta sul flusso di lavoro? –
Questo in realtà non risponde alla mia domanda in quanto funziona solo con le funzioni, non con i flussi di lavoro. –
Ho aggiunto la parte "flusso di lavoro" alla risposta. –