首页 > 解决方案 > 使用 powershell 创建计划任务时无法传递参数。我应该将 -version 设为“sql server 2016”而不是“sql”

问题描述

我正在尝试使用 powershell 创建计划任务。

能够正确创建和执行任务

```
$servername ="myservername"
# Issue with the version, unable to pass. Splitting in the scheduler argument.
$version="sql server 2016" 
$edition="enterprise"

$action = New-ScheduledTaskAction -Execute Powershell.exe -Argument "-File G:\ForAPI\MainFunctions_All.ps1 -Servername $servername -Version $version -Edition $edition"

$trigger =  New-ScheduledTaskTrigger -Once -At 12:00PM
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "MSSQL" -Description "SQL Deployment"
```

我应该将 -version 设为“sql server 2016”而不是“sql”

标签: powershellscheduled-tasks

解决方案


您需要将参数更改为位置参数并按照 1st 的顺序进行更改servername,然后versionedition使用它的函数中进行更改。

当值被它们保存时,您应该对内部参数使用单引号,否则您将观察到部分记录(正是您现在得到的);像下面这样更改报价:

$action = New-ScheduledTaskAction -Execute "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -Argument "-ExecutionPolicy ByPass -File G:\ForAPI\MainFunctions_All.ps1 '$servername' '$version' '$edition'" 

如果参数都是位置参数,那么您可以完全避免-Servername,-Version-Edition不必要的。

这将为您解决问题。希望能帮助到你。


推荐阅读