Запуск 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 является недопустимым аргументом / опцией.

Другие вопросы по тегам