The Controller parameter is a controller object obtained by either Connect-NaController or Connect-NcController. If you've already established a connection using Connect-NaController, and the global $CurrentNaController variable is set, you do not need to specify the Controller parameter.
Here's an example explicitly specifying the Controller parameter:
What version of the Toolkit are you running? You can use Get-NaToolkitVersion to find out.
I don't understand why you would be seeing the same error when providing the controller object explicitly. The error in your original post is PowerShell failing to coerce the string into an abstract type; by providing an object of that type you should at the very least get past that parameter validation.
Have you tried using Connect-NaController to make the connection and leaving the -Controller parameter out of Repair-NaVirtualDiskAlignment entirely?