$FileServerShares
já é uma matriz (mesmo sem o especificador [array]
):
PS> $FileServerShares.getType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
Por algum motivo, quando uma matriz de objetos compartilhados é convertida em uma sequência, cada compartilhamento é colocado na mesma linha. Não sei por que isso acontece, mas o que você pode fazer é converter os objetos de compartilhamento em strings para que você tenha uma matriz de strings. Arrays de strings são convertidos em strings de múltiplas linhas.
$FileServer = "ServerName"
$FileServerShares = gwmi win32_Share -ComputerName $FileServer |
Where-Object {$_.type -eq '0'} |
Where {$_.name -notlike "*$*"} |
% { $_.ToString() }
Write-Host $FileServerShares