Похоже, что $ args имеет область действия "script". Существует три области действия: локальная, глобальная и сценарий.
Если функция изменяется следующим образом:
function fun
{
Write-Host $script:args
}
Тогда это будет работать. «Script:» является оператором разрешения области («local:» является значением по умолчанию). Я нашел этот результат несколько экспериментально, и я не могу сказать, что точно знаю, в чем смысл области сценария, но кажется, что переменные в области сценария каким-то образом принадлежат самому сценарию.
Редактировать: Я принимаю свой собственный ответ как лучший, поскольку именно он решил мою проблему, но также см. Другие ответы и их комментарии для получения некоторой полезной информации.