我使用八达通进行部署。我在控制部署的 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 上运行?
与
-Force
一起运行:
Stop-Process -InputObject $prc -ErrorAction SilentlyContinue -Force
正如 C.B. 在评论中建议的那样:
-confirm:$false
也应该有效。其基本原理如下: -Confirm
是一个开关参数。如果您指定带有尾随冒号和值的参数,则开关参数只能接受参数。
我只是尝试在有孩子的目录上使用Remove-Item,并收到相同的消息:
Remove-Item : PowerShell is in NonInteractive mode. Read and Prompt functionality is not available.
就我而言,-Recurse
键有帮助。
我在 Azure Devops PowerShell 部署任务上运行内联 PowerShell 命令时遇到此问题。我只能通过在
Command Line Script
任务中运行 PS 命令来解决该问题,请参阅文档 here。
将以下内容添加到任务的脚本字段中,例如:
Powershell -Command "Install-Module -Name SqlServer -Force -Confirm:$false"
换句话说,将 PS 命令放在双引号中,然后运行
PowerShell -Command "MyPSCommand..."
。