I’m fighting with Azure and publishing via PowerShell at the moment.
It seems that powershell is problematic and does not want to play. Especially with slow deployment times – you need to wait for it to throw errors, and that usually takes 3-15 minutes depending on your internet speed.

So you would want to get error message captured:

# try publish - here I get 500 server error
New-AzureDeployment -Slot Staging -Package $package -Configuration $configuration -ServiceName $service

# capture error stream
$sr = new-object System.IO.StreamReader($Error[0].Exception.InnerException.Response.GetResponseStream())  
$txt = $sr.ReadToEnd() 

# print out the message

Hopefully this will help a bit.
Info taken from this guy