非交互模式下的Powershell

时间:2013-05-16 06:47:33

标签: powershell deployment octopus-deploy

我使用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处于NonInteractive模式。读取和提示功能不可用。

可运行的脚本在Powershell 3.0上运行,Powershell 3.0不适用于Powershell 2.0。我无法在任何地方升级到Powershell 3.0,因为旧服务器与Windows Server 2003一起运行。如何在PS 2.0上运行?

2 个答案:

答案 0 :(得分:17)

使用-Force

运行

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

正如C.B.在评论中所建议的那样:-confirm:$false也应该有效。其基本原理如下:-Confirm是一个switch参数。如果使用尾部冒号和值指定参数,则切换参数只能接受参数。

答案 1 :(得分:3)

我只是尝试在带有子目录的目录上使用Remove-Item并得到相同的消息: Remove-Item : PowerShell is in NonInteractive mode. Read and Prompt functionality is not available. 就我而言,-Recurse键有所帮助。