我正在编写powershell脚本,这些脚本运行在一系列预定的任务中,并试图在Windows 2008上删除它们。在powershell中测试schtasks.exe命令时,它似乎运行得很好。但是,当我把它放在我的脚本中时,我得到了以下错误:(请注意,我删除了公司名称,并将它们替换为“公司名称”)
错误:无效的参数/选项- 'ScheduledJobs\Companyname\0.999.1-CompanynameMacStation传递管理器-测试‘。 移除,退出代码: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发布于 2015-05-05 23:07:32
弄明白了;这就是我如何调用函数的方式。
我将函数称为"Remove2008ScheduledJob“,就好像它是一个c#或javascript函数,它的工作方式不同。
我是这样说的:
Remove2008ScheduledJob($server, $name)当我应该这样称呼它时:
Remove2008ScheduledJob $server $name因此,$server基本上变成了$server,空格后面跟着$name,$name是空的。这解释了为什么它声称$name是一个无效的参数/选项。
https://stackoverflow.com/questions/30060928
复制相似问题