Запуск Schtasks через powershell, выдающий недопустимый аргумент / ошибка опции
Я пишу сценарии powershell, которые выполняются через кучу запланированных задач и пытаются удалить их в Windows Server 2008. При тестировании команды schtasks.exe в powershell кажется, что она работает нормально. Но когда я помещаю его в свой скрипт, я получаю следующую ошибку: (обратите внимание, что я удалил названия компаний и заменил их на "Название компании")
ОШИБКА: недопустимый аргумент / опция - "ScheduledJobs\Companyname\0.999.1-CompanynameMacStation Delivery Manager-Test".
Удаление, код выхода: 1
Это фрагмент кода из скрипта; $version - это версия нашего программного обеспечения, в данном случае 0.999.1, а $environment - среда развертывания, в данном случае Test. $server - это сервер, на котором мы пытаемся удалить запланированное задание. Что-то, что я нахожу действительно странным, это то, что, если вы посмотрите на ошибку выше, она отображает имя $, которое мы передаем в задачи, но когда я ссылаюсь на него в следующей строке для целей диагностики ("Удаление, код выхода: 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
1 ответ
Понял это; это как я называю функции.
Я вызываю функцию "Remove2008ScheduledJob", как будто это функция aC# или javascript, которая работает по-другому.
Я называю это так:
Remove2008ScheduledJob($server, $name)
Когда я должен называть это так:
Remove2008ScheduledJob $server $name
Из-за этого $ server в основном становится $ server, за пробелом следует $ name, а $ name является пустым. Это объясняет, почему он утверждает, что $ name является недопустимым аргументом / опцией.