我正在编写运行一系列计划任务的powershell脚本,并试图在Windows Server 2008上删除它们。在powershell中测试schtasks.exe命令时,它似乎运行正常。但是当我把它放在我的脚本中时,我收到以下错误:(请注意,我删除了公司名称并将其替换为"公司名称和#34;)
错误:无效的参数/选项 - ' ScheduledJobs \ Companyname \ 0.999.1-CompanynameMacStation Delivery Manager-Test'。
删除,退出代码:1
这是脚本中的一段代码; $ version是我们的软件版本,在本例中为0.999.1,而$ environment是部署环境,在本例中为Test。 $ server是我们尝试删除计划任务的服务器。我觉得奇怪的是,如果你看一下上面的错误,它会显示我们传入schtasks的$ name,但是当我在下一行引用它以进行诊断时,("删除,退出代码) :1")看起来$ name现在是空的。此脚本是构建模板的一部分,因此它从我们的构建服务器运行并对远程计算机运行命令。想法?
function RemoveScheduledJob($server, $name)
{
Write-Host "Deleting Scheduled job $name."
$windowsVersion = (Get-CimInstance Win32_OperatingSystem).Version
$windowsVersion = $Version.Substring(0,3)
if ([double]$windowsVersion -ge 6.2)
{
Remove2012ScheduledJob($server, $name)
}
else
{
Remove2008ScheduledJob($server, $name)
}
}
function Remove2008ScheduledJob($server, $name)
{
schtasks.exe /delete /s $server /F /tn $name
Write-Host "Removing $name, Exit code: $LASTEXITCODE"
}
$taskPath = "ScheduledJobs\CompanyName"
$taskName = "$taskPath\{0}-CompanyName Delivery Manager-{1}" -f $Version, $Environment
RemoveScheduledJob $Server $taskName
答案 0 :(得分:0)
想出来;这就是我调用函数的方式。
我正在调用函数“Remove2008ScheduledJob”,就像它是一个c#或javascript函数,它的工作方式不同。
我这样称呼它:
Remove2008ScheduledJob($server, $name)
我应该这样称呼它:
Remove2008ScheduledJob $server $name
因此,$ server基本上变为$ server,空格后跟$ name,$ name为空。这解释了为什么声称$ name是无效的参数/选项。