Вы слишком много хотите от Start-Process :)
Это просто winapi, которое не знает о том, что в качестве аргумента может быть не строка.
Поэтому всё упирается в интерпретатор параметров, который в вызываемом скрипте.
Я в своём примере в том самом вопросе не зря в called добавил ещё и вывод $args
Если в первом скрипте аргументы формировать как
$argumentList = '-noprofile', '-noexit', '-File', 'd:\called.ps1', "-FilePath `"$filepath`""
$argumentList += $patterns
А второй сделать как
param(
[string]$FilePath #,
# [array]$Patterns
)
То во втором именно в $args попадёт содержимое массива
Но по любому второй скрипт должен знать, что ему куда передают
Поэтому я такую проблему решал бы вообще с другой стороны :)
Достаточно добавить в запускающий скрипт
#requires -RunAsAdministrator
и тогда запускаемому можно передавать всё что угодно, ведь его не надо будет запускать через
Start-Process, а можно будет просто вызывать из первого