Also, this must be a picky recommendation, but I would consider that any of the parameters could be 0 or even "$false" (hey, it's not impossible to have that as a password), so I wouldn't use the ! prefix for conditions there.