Очевидная проблема, которую я вижу здесь, состоит в том, что вы передаете имя файла в первом случае, а во втором вы передаете содержимое файла. Если вы отправите оба файла в одну и ту же переменную, у вас возникнет проблема внутри скрипта.
Могу ли я предложить альтернативный подход:
function Edit-Piglatin
{
param(
[Parameter(Mandatory=$false,
ValueFromPipeline=$true,
Position=0)]
[string[]]$Content,
[Parameter(Mandatory=$false,
ValueFromPipeline=$false,
Position=1)]
[string[]]$Path
)
#named parameter $path will get the input for the filename
#values from pipeline will go to automatically go to $content
if ($Path)
{
#use this as input
}
elseif ($Content)
{
#use this as input
}
else
{
#no input
}
}
Хитрость в этом ValueFromPipeline=$true
вместе с Position=0
. Теперь с помощью простого условия if-else
вы можете определить, какая переменная будет обрабатываться внутри вашей функции.