A razão pela qual $ args [0] não está retornando nada no objeto foreach é que $ args é uma variável automática que usa parâmetros não nomeados e sem correspondência em um comando e o foreach-object é um novo comando. Não há nenhum parâmetro não correspondido para o bloco de processo, então $ args [0] é nulo.
Uma coisa que pode ajudar é que seus scripts podem ter parâmetros, assim como funções.
param ($SomeText, $SomePath)
function foo($arg1, $arg2)
{
echo $arg1
echo $arg2.FullName
}
echo "0: $SomeText"
echo "1: $SomePath"
$items = get-childitem $SomePath
$items | foreach-object -process {foo $SomeText $_}
À medida que começar a querer mais funcionalidade com seus parâmetros, convém conferir uma postagem no Eu escrevi sobre a progressão de parâmetros de $ args para os parâmetros avançados atuais que podemos usar agora.