Just to be sure my PSCredential object is being set properly via SecureString I added the following code to unpack the SecureString and it is correct. The credentials are correct to log into the controller so not sure why my C# code is throwing this error. I call the below code with a MessageBox.Show(SecureStringToString(pwd)) and it shows the correct net@pp1.
Answered my own question but definitely with a head scratch. Modified code below; the only difference in the code is that I am reading the 3 parameters (controller IP/name, login and password) into string variables then using the resulting stored strings in my calls and everything works no problem.