Not at all. What I'm saying is that /bin/sh has idiosyncratic, incomplete language syntax and semantics (mostly for historical reasons). For example, variable comparison is not built in but rather is dependent upon the external [ (or test). It would be hard to call a language 'complete' when it doesn't even support variable equality testing.
Whatever you think of Windows/MS/etc, Powershell is a decently-well-designed, complete language with a number of useful, convenient constructs. For example, here is a native Powershell hashmap (that can be looped over, etc.):
$states = @{"Washington" = "Olympia"; "Oregon" = "Salem"; California = "Sacramento"}
Nice, no?