Depends on what's in your function's Process block. Since $ComputerName is an array, you'll likely need a loop of some sort to enumerate that array. When you pipe stuff in, the process block gets called multiple times with just one string each time, but when you pass in the array on the command line, the process block gets called only once, and $ComputerName will contain the whole list of names.
Process has a bunch of if statements and whatnots that all reference the variable as if it were a single value.
So if I wrap the whole process block (contents) inside a foreach loop, i should be all set for both cases, right?