web-dev-qa-db-fra.com

Powershell en mode non interactif

J'utilise Octopus pour nos déploiements. J'ai un problème avec l'un des scripts Powershell pour contrôler le déploiement:

# 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
    }
}

Les programmes que j'essaie d'arrêter ne sont pas ceux que vous voyez dans le script ci-dessus, mais ils représentent ce que j'essaie de faire. Maintenant, le problème que j'ai avec, c'est qu'il fonctionne bien sur un serveur, mais pas sur un autre. Là où cela ne fonctionne pas, j'obtiens le message d'erreur:

Stop-Process: Windows PowerShell est en mode non interactif. La fonctionnalité de lecture et d'invite n'est pas disponible.

Le script qui fonctionne s'exécute sur Powershell 3.0, celui qui ne fonctionne pas sur Powershell 2.0. Je ne peux pas encore mettre à niveau Powershell 3.0 partout car les anciens serveurs fonctionnent avec Windows Server 2003. Comment puis-je le faire fonctionner sur PS 2.0?

20
tobre

Courir avec -Force:

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

Comme l'a suggéré C.B. dans le commentaire: -confirm:$false devrait également fonctionner. La justification est la suivante: -Confirm est un paramètre de commutation. Les paramètres de commutateur ne peuvent prendre des arguments que si vous spécifiez le paramètre avec un deux-points de fin et une valeur.

19
Davor Josipovic

J'ai juste essayé d'utiliser Remove-Item sur le répertoire avec des enfants et j'ai reçu le même message: Remove-Item : PowerShell is in NonInteractive mode. Read and Prompt functionality is not available. Dans mon cas -Recurse la clé a aidé.

0
gek