PowerShell:来自 Visual Studio 代码的 运行 脚本有效,来自 PS 命令行的 运行 失败

PowerShell: Running Script from Visual Studio Code Works, Running from PS Command Line Fails

我有一个 PowerShell 脚本,它是我在 Visual Studio 代码中开发和测试的,运行 没有错误。但是,当我尝试从 PowerShell 命令行 运行 相同的脚本时,它失败并出现几个错误,第一个是关于在脚本的第一行使用 Param 的投诉。我的机器上安装了 PS 5.1。

从命令行启动时,这是我执行的:

powershell -ExecutionPolicy Bypass -File Export_PI.ps1 -Project Catalyst-DHT

当我 运行 这个来自 Visual Studio 代码的脚本时,我用一个硬编码值代替参数 -Project 用于测试目的。当我从 PS 命令行 运行 它时,这是我得到的第一个错误:

Param : The term 'Param' is not recognized as the name of a cmdlet, function, script file, or operable program.

我在别处读到,当 Param() 不是脚本中的第一个非注释行时,通常会发生这种情况。在我的脚本中,它是第一个非注释行:

$ProjectName = Param([String]$Project)

我不是 PowerShell 高手,所以这很可能是新手犯的错误。我希望有人能帮我弄清楚。谢谢。

I have PS 5.1 installed on my machine.

很可能是您遇到的问题。 VSC 使用 PowerShell Core (6 <=) 而不是 PowerShell Desktop (6 >)

也行

$ProjectName = Param([String]$Project)

不正确,因为您没有将 Param 分配给变量,而是将其用作根据提供的参数分配变量的语句。你会想要

Param([String]$ProjectName)

作为脚本的第一行。与错误状态一样,Param 不是在脚本顶部单独使用时的 cmdlet、函数、脚本文件或可运行程序的名称。