To summarize and complement the existing answers, as of Windows PowerShell v5.1 (the latest and last version) / PowerShell (Core) 7.3.3:
David Mohundro's answer rightfully points that instead of [bool] parameters you should use [switch] parameters in PowerShell, where the presence vs. absence of the switch name (-Unify specified vs. not specified) implies its value, which makes the original problem go away.
However, on occasion you may still need to pass the switch value explicitly, particularly if you're constructing a command line programmatically:
In PowerShell Core 7+, the original problem (described in Emperor XLII's answer) has been fixed.
That is, to pass $true explicitly to a [switch] parameter named -Unify you can now write:
pwsh -File .\RunScript.ps1 -Unify:$true # !! ":" separates name and value, no space
The following values can be used: $false, false, $true, true, but note that passing 0 or 1 does not work.
Note how the switch name is separated from the value with : and there must be no whitespace between the two.
Note: If you declare a [bool] parameter instead of a [switch] (which you generally shouldn't), you must use the same syntax. Even though -Unify $false should work, it currently doesn't - see GitHub issue #10838.
In Windows PowerShell, the original problem persists, and - given that Windows PowerShell is no longer actively developed - is unlikely to get fixed.
:: # From cmd.exe
powershell -Command "& .\RunScript.ps1 -Unify:$true"
With -Command you're effectively passing a piece of PowerShell code, which is then evaluated as usual - and inside PowerShell passing $true and $false works (but not true and false, as now also accepted with -File).
Caveats:
Using -Command can result in additional interpretation of your arguments, such as if they contain $ chars. (with -File, arguments are literals).
Using -Command can result in a different exit code.
For details, see this answer and this answer.