Dynamic parameters allow a developer to define the behavior of parameters when a function is run, rather than hardcoding that behavior in advance in a param block. Dynamic parameters can be used to overcome some of the limitations inherent in a param block. For example, it is possible to change the parameters presented by a command based on the value of another parameter. It is also possible to dynamically write validation, such as dynamically assigning a value for the ValidateSet attribute.
Dynamic parameters remain unpopular in the PowerShell community. They are relatively complex; that is, they are hard to define, and difficult to troubleshoot as they tend to silently fail rather than raising an error. Dynamic parameters have a named block: dynamicparam. If dynamicparam is used, the default blocks for a script or function cannot be used; all code must be...