$args is a automatic variable, meaning that you are prevented from using the args name for a user-defined variable.
Use any other name and it'll work:
function GetProcessOutput([string]$exeFile,[array]$arguments)
{
# $arguments will work just fine
}
From the about_Variables help file:
There are several different types of variables in Windows
PowerShell.
-- User-created variables: User-created variables are created and
maintained by the user. By default, the variables that you create at
the Windows PowerShell command line exist only while the Windows
PowerShell window is open, and they are lost when you close the window.
To save a variable, add it to your Windows PowerShell profile. You can
also create variables in scripts with global, script, or local scope.
-- Automatic variables: Automatic variables store the state of
Windows PowerShell. These variables are created by Windows PowerShell,
and Windows PowerShell changes their values as required to maintain
their accuracy. Users cannot change the value of these variables.
For example, the $PSHome variable stores the path to the Windows
PowerShell installation directory.
$args->${Something else that do not clash with $args automatic variable}