Desidero creare una funzione di PowerShell che enumeri alcuni dati e generare un blocco di script su tutte le occorrenze.Funzione PowerShell con blocco di script parametrizzato
Ormai ho (questo non è il codice vero e proprio, ma illustra il mio problema):
function Invoke-TenTimes
{
[CmdletBinding()]
param
(
[Parameter(Mandatory=$true, Position=0)]
[ScriptBlock]$Action
)
process
{
$digits = 0..10
$digits | % {
$Action.Invoke($_);
}
}
}
ho messo questa funzione nel mio modulo. Tuttavia, non ottengo alcun risultato quando chiamo:
Invoke-TenTimes { $_ }
L'output è vuoto (non viene visualizzato nulla).
Se chiamo
Invoke-TenTimes { $_ -eq $null }
ottengo dieci true
. In effetti, vedo che $_
è nullo.
Qual è il modo corretto di compilare il $_
?
Che cosa sta facendo impazzire, è che se metto questa funzione e la chiamata nello stesso file PS1, funziona (ma voglio passare blocco di script su richiesta):
function Invoke-TenTimes
{
[CmdletBinding()]
param
(
[Parameter(Mandatory=$true, Position=0)]
[ScriptBlock]$Action
)
process
{
$digits = 0..10
$digits | % {
$Action.Invoke($_);
}
}
}
Invoke-TenTimes { $_ }
Grazie! questo ha risolto il mio problema, e ora sono in grado di utilizzare un blocco di script con $ _ :). –