If I pass a creds object that has a password with an ampersand, the password seems to get munged and auth fails... try:
$securepass = ConvertTo-SecureString -string 'foobar&d' -Force -AsPlainText
$creds = New-Object System.Management.Automation.PSCredential('[email protected]', $securepass)
Add-AzureAccount -credential $creds
(note using Add-AzureAccount interactively with the same set of creds works fine)