Powershell в неинтерактивном режиме

Я использую Octopus для наших развертываний. У меня есть проблема с одним из сценариев Powershell для управления развертыванием:

# stops running processes
$processes = @("Notepad",
               "Firefox")
foreach ($process in $processes)
{
    $prc = Get-Process -Name $process -ErrorAction SilentlyContinue
    if (-not($prc -eq $null))
    {
        Write-Host "Stopping " $prc.ProcessName
        Stop-Process -InputObject $prc -ErrorAction SilentlyContinue
    }
}

Программы, которые я пытаюсь остановить, не те, что вы видите в script выше, но они представляют собой то, что я пытаюсь сделать. Теперь проблема, с которой я связан, заключается в том, что она хорошо работает на одном сервере, но не на другом. Если он не работает, я получаю сообщение об ошибке:

Стоп-процесс: Windows PowerShell находится в режиме NonInteractive. Функции чтения и запроса недоступны.

script, который работает на Powershell 3.0, тот, который не работает на Powershell 2.0. Я не могу обновить до Powershell 3.0 везде, потому что старые серверы работают с Windows Server 2003. Как я могу заставить его работать на PS 2.0?

Ответ 1

Запустите с помощью -Force:

Stop-Process -InputObject $prc -ErrorAction SilentlyContinue -Force

Как указано в комментарии C.B. в комментарии: -confirm:$false. Обоснованием для этого является следующее: -Confirm - параметр переключателя. Параметры переключателя могут принимать только аргументы, если вы укажете параметр с конечным двоеточием и значением.