非交互模式下的 Powershell

问题描述 投票:0回答:3

我使用八达通进行部署。我在控制部署的 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 上运行?

powershell deployment octopus-deploy
3个回答
37
投票

-Force
一起运行:

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

正如 C.B. 在评论中建议的那样:

-confirm:$false
也应该有效。其基本原理如下:
-Confirm
是一个开关参数。如果您指定带有尾随冒号和值的参数,则开关参数只能接受参数。


4
投票

我只是尝试在有孩子的目录上使用Remove-Item,并收到相同的消息:

Remove-Item : PowerShell is in NonInteractive mode. Read and Prompt functionality is not available.
就我而言,
-Recurse
键有帮助。


0
投票

我在 Azure Devops PowerShell 部署任务上运行内联 PowerShell 命令时遇到此问题。我只能通过在

Command Line Script
任务中运行 PS 命令来解决该问题,请参阅文档 here

将以下内容添加到任务的脚本字段中,例如:

Powershell -Command "Install-Module -Name SqlServer -Force -Confirm:$false"

换句话说,将 PS 命令放在双引号中,然后运行

PowerShell -Command "MyPSCommand..."

© www.soinside.com 2019 - 2024. All rights reserved.