Syntax seems fine to me although your initial block of variables includes something about passwords and that code wouldn't be used.
Note in the docs that it says that if you provide a password to the cmdlet and the password is not complex enough then it will create the user but not set the password. You would have no way of knowing this without querying for the user to verify the account is enabled. So my initial instinct is that the password you're using isn't sufficiently complex enough to meet your AD requirements and therefore the password isn't being set.
I would recommend that you verify the account is enabled after the call and/or use Set-ADAccountPassword instead as it seems like it reports an error if the set fails. You would need to verify this though. Also note you'd need to enable the account after the password is set as well.