Error: "the term is not recognised as the name of a cmdlet"

Error: "the term is not recognised as the name of a cmdlet"

我编写了一个基本脚本来执行和发送带附件的电子邮件,我已经在 PowerShell 中对此进行了测试。但是,当我尝试将其创建为任务计划程序时,出现以下错误:

然而,我的完全相同的代码在 PowerShell 中执行时没有问题。

这是我在任务调度器中的视图:

我错过了什么?我已经设置了执行策略,所以这不是问题,我已经测试了我的代码,那里没有问题。

改为使用 -File 参数:

-File "C:\path\to\your.ps1"

PowerShell 的调用运算符 (&) 仅在 PowerShell 内部有效,因此您需要将其放在参数字符串中:

"& 'C:\path\to\your.ps1'"

虽然这也可行,但它有一些缺点,最重要的是它 return 只有 0(成功)或 1(失败)作为退出代码,而不是脚本的实际退出代码.

您的参数需要包含 -Command 参数,而不仅仅是您想要 运行 的代码。此外,运行 的代码必须是字符串,而不是原始的 Powershell 代码,否则命令行将尝试解释它。将参数设置为:

-Command '&"C:\Users\Martyn\Documents\Powershell Scripts\Working.ps1"'

或者,您可以直接尝试 -File 参数,尽管它存在已知问题:

-File "C:\Users\Martyn\Documents\Powershell Scripts\Working.ps1"

如果其他人遇到此错误,您需要先将 ProcessMitigation 安装到 PowerShell 中,然后才能使用它。默认情况下,它不存在。

安装步骤:

  • 运行 具有管理权限的 Powershell。
  • 运行 Save-Module -Name ProcessMitigations -Path <path> PS 命令下载组件。提供实际路径而不是下载。
  • 运行 Install-Module -Name ProcessMitigations 在 PS 中安装它。

更多here