c:\> Powershell blah blah
doesn't do what you would think it would do. PowerShell expects "blah blah" to be code written in Powershell. the canonical example is the following:
c:\> Powershell 2+2
4
Get it? Do you ever find yourself typing "Powershell blah blah" at the command line? I didn't think so. PowerShell is a scripting language, so you might be expecting
c:\> Powershell script.ps1
to run a script named script.ps1. Well if so, you would be wrong. PowerShell instead expects "script.ps1" to be a PowerShell command, which it obviously isn't. The solution, for some unexplained reason, is to add an ampersand in quotation marks. Thus,
c:\> Powershell "&" script.ps1
BTW, it's more conventional to put the script reference in quotation marks as well. In other words,
> Powershell "& script.ps1"
According to the error message you receive if you type
c:\> Powershell "& blah blah"
the quoted ampersand tells PowerShell that what comes afterward is one of four things:
- cmdlet
- function
- script file
- operable program