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?
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.
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é.