PowerShell provides a variety of different ways to tightly define the content for a parameter. Assigning a .NET type to a parameter is the first of these. If a parameter is set as [String], it will only ever hold a value of that type. PowerShell will attempt to coerce any values passed to the parameter into that type.