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。
我编写了一个基本脚本来执行和发送带附件的电子邮件,我已经在 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。