使用powershell创建计划任务时无法传递参数。我应该得到-version作为;sql server 2016“;而不是",;sql";

使用powershell创建计划任务时无法传递参数。我应该得到-version作为;sql server 2016“;而不是",;sql";,powershell,scheduled-tasks,Powershell,Scheduled Tasks,我正在尝试使用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 Powershel

我正在尝试使用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”

您需要将参数更改为位置参数,并使其顺序与第一个
servername
相同,然后在使用它的函数中依次更改
version

当参数的值由它们保留时,您应该对其中的参数使用单引号,否则您将观察到部分记录(正是您现在得到的);将报价更改如下:

$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


这会对你有用的。希望能有所帮助。

您需要将参数更改为位置参数,并使其按顺序排列,如使用它的函数中的第一个
servername
,然后是
version
,然后是
edition

当参数的值由它们保留时,您应该对其中的参数使用单引号,否则您将观察到部分记录(正是您现在得到的);将报价更改如下:

$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


这会对你有用的。希望有帮助。

您没有用双引号包装字符串忘记提及,我也尝试过使用“双引号”。。。“没用”你没有用双引号包装字符串忘了提一下,我已经用“双引号”试过了。。。“没有用”如果我用单引号传递它,它只传递$version的param值,我应该在task scheduler argument.Ya中获得“sql server 2016”的值。因此,您需要对参数逐一进行排序。我已经用三个值对字符串中的参数进行了硬编码测试,它正确地反映在参数列表中。在正常情况下,它工作正常。。。问题是在任务计划程序中注册计划作业时,无法传递参数。从您的终端尝试使用相同的参数注册为任务。它将不起作用。如果我用单引号传递它,它将仅以$version的形式传递参数值,我应该在task scheduler argument.Ya中获得“sql server 2016”的值。因此,您需要对参数逐一进行排序。我已经用三个值对字符串中的参数进行了硬编码测试,它正确地反映在参数列表中。在正常情况下,它工作正常。。。问题是在任务计划程序中注册计划作业时,无法传递参数。从您的终端尝试使用相同的参数注册为任务。这是行不通的。