I don't know... maybe I'm missing something here...
If the users does not have admin rights then they can't add themselves. If you are running the script by impersonating someone with admin rights using SU or RunAs, then the InGroup() and the @UserID would reflect the impersonated user and not the one you want to add.

Confused [Confused]
_________________________
Give a man a fish and he will be back for more. Slap him with a fish and he will go away forever.