A scheduled job will become corrupt in a number of circumstances:
running it using the scheduled task cmdlets – almost always
running it through the task scheduler before it’s run once on a schedule – roughly 25% of the time & I can’t tie down the reasons
In PowerShell v4 things are a little better as you have the ability to start the scheduled job through the RunNow parameter for Register-ScheduledJob and Set-ScheduledJob. I’d recommend upgrading to PS 4.0 if you want to use scheduled jobs just for those parameters.
Also once your scheduled job has become corrupt, deleting it and recreating won’t work. The name is preserved somewhere – haven’t tracked it down yet – and the new definition is immediately flagged as corrupted. You need to give the scheduled job a new name