2017-09-18 6 views
2

Habituellement, lorsque je souhaite fermer une application en panne, j'utilise une approche en deux étapes. Disons, par exemple, je veux quitter rstudio, je ferais cePowershell: existe-t-il un moyen plus sûr de quitter un programme que Stop-Process

PS C:\Users\Admin\> Get-Process rstudio 

Handles NPM(K) PM(K)  WS(K) VM(K) CPU(s) Id ProcessName 
    210 89 158144 133840 570 2.67 4508 rstudio 

PS C:\Users\Admin\> Stop-Process 4508 

Cela tue efficacement le programme.

Ma préoccupation est la suivante: que se passe-t-il si quelqu'un tape le mauvais Id par erreur et que la valeur fournie coïncide avec un autre processus menant à des dommages sérieux? Y a-t-il un filet de sécurité que l'on peut appliquer pour éviter cela?

+0

'Get-Process" rstudio "| Stop-Process'? Cela permettrait d'arrêter les threads _all_ rstudio et seulement ceux-là. Pas besoin de jouer avec des pids – Matt

+0

Ok va essayer ça lors de la prochaine session. Mais je ne comprends pas comment cela fonctionnerait puisque 'Get-Process' renvoie plus que simplement' Id'. –

+2

Stop-Process utilise l'objet qui lui est transmis et lie les propriétés partagées par les cmdlets. about_pipeline serait un sujet d'aide pour commencer. Pratique avec 'notepad' – Matt

Répondre

3

Stop-Process est assez faible niveau et simple, mais, comme beaucoup d'applets de commande PowerShell, vous pouvez spécifier le Confirm paramètre commun pour vous donner un peu d'un filet de sécurité:

PS C:\Users\example> Stop-Process -Confirm 11644 

Confirm 
Are you sure you want to perform this action? 
Performing the operation "Stop-Process" on target "notepad (11644)". 
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): 

L'exemple tue au-dessus d'un bloc-notes .exe processus par son PID, mais en ajoutant -Confirm, PowerShell vous demandera avant de tuer le processus et vous montrer le nom du processus de sorte que vous pouvez vérifier que c'est bien le processus que vous souhaitez terminer.

+1

Merci. Je vais désormais utiliser ce paramètre! –