In this particular case, as far as your Verb-Noun function is concerned, all three examples are “direct input to the parameter”. The first two examples happen to be using positional binding instead fo a named parameter, but either way, you’re not actually piping input to Verb-Noun. You’re piping it to ForEach-Object, and then calling Verb-Noun multiple times from there.
While you ‘might’ be able to pull the information you’re asking about from either $MyInvocation or Get-PSCallStack, your Verb-Noun command really shouldn’t care where the input comes from, and trying to figure that out from inside Verb-Noun will seriously clutter your code. I’d be asking myself why I felt I needed that information in the first place, and see if I can find some other approach.