Я только что запустил ваш пример почтового кода в OSX, в редакторе VSCode, на обоих терминалах и через обычный терминал PSCore по умолчанию, и он работал как положено.
Также запомните правильную конструкцию именования в PowerShell, если используется глагол-существительное.Таким образом, ваша функция должна быть чем-то вроде строки New-ttr.
#!/usr/bin/env pwsh
function New-ttr{
Param(
$file,
$name
)
write-host $file
write-host $name
}
Итак, я сохранил код как test.ps1 в своей папке загрузок и выполнил…
~/downloads/test.ps1
...от каждого из терминалов.Для запуска в редакторе VSCode достаточно выбрать текст ...
function New-ttr{
Param(
$file,
$name
)
$file
$name
}
New-ttr -$file Somefilename -name somename
выбрать терминал и запустить выбранный текст или запустить активный файл.Наконец, не используйте Write-Host, если вы не раскрашиваете текстовый вывод текста или другие необходимые условия форматирования.Вывод на экран по умолчанию.
Итак, этот ...
write-host $file
write-host $name
.. и этот ...
$file
$name
... будет делать то же самое.
Write-Host не подходит для конвейера и очищает буфер, поэтому его использование настоятельно не рекомендуется.
Если вы хотите использовать запись для вывода на экран, рассмотрите возможность использования Write-Output или одного из других методов Write- *cmdlets.
Хотя я не уверен, почему вы передаете оба параметра $ file и $ name, даже в этом тесте.Я предполагаю, что один - это путь, а другой - имя файла для поиска.Вы можете просто передать полный путь к файлу в $ file и извлечь имя, используя $ file.Name.