29

我使用 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
    }
}

我尝试停止的程序不是您在上面的脚本中看到的程序,但它们代表了我正在尝试做的事情。现在我遇到的问题是它在一台服务器上运行良好,但在另一台服务器上运行良好。在它不起作用的地方,我收到错误消息:

停止进程:Windows PowerShell 处于非交互模式。阅读和提示功能不可用。

有效的脚本在 Powershell 3.0 上运行,而在 Powershell 2.0 上无效的脚本。我还不能在任何地方升级到 Powershell 3.0,因为旧服务器运行 Windows Server 2003。我怎样才能让它在 PS 2.0 上运行?

4

2 回答 2

31

运行-Force

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

正如 CB 在评论中建议的那样:-confirm:$false也应该有效。这样做的理由如下:-Confirm是一个开关参数。仅当您指定带有尾随冒号和值的参数时,切换参数才能接受参数。

于 2013-05-16T07:02:20.243 回答
4

我只是尝试在有孩子的目录上使用 Remove-Item 并得到相同的消息: Remove-Item : PowerShell is in NonInteractive mode. Read and Prompt functionality is not available. 在我的情况下-Recurse,密钥有帮助。

于 2020-03-06T08:06:45.447 回答