Görev listesi ile bir görevi başlatan komut nasıl alınır?


18

Windows görev yöneticisinde, tüm anahtarları ve parametreleri içeren, verilen görevi başlatan komutu gösteren Komut Satırı etiketli bir sütun vardır :

test.exe -V -A 127.0.0.1 -P 6062

Şimdi belirli bir bağlantı noktasını dinleyen ve / veya belirli bir anahtar kombinasyonuyla çağrılan belirli bir görevi tanımlamam gerekiyor. Amacım seçilen görevi kapatmak, ancak diğerlerini kapatmak değil, bu yüzden test.exeçalışan birden fazla görev varsa , yalnızca döndürülen tüm görevleri kapatamıyorum:

tasklist /fo csv /nh /fi "imagename eq test.exe"

Ne yazık ki, ne Komut Satırı alanını ne tasklistde pslist( burada ) geri döndüremiyoruz . Bu sorunun üstesinden nasıl gelebilirim?


Belki netstat -aon | grep \.0:6062bağlantı noktası 6062 için bir şey yapabilirsiniz ve son sütun programınızın PID'si olacaktır. Bunun sizin için yeterli olup olmadığından emin değilim. tasklist /FI "PID eq <PID>"çalıştırılabilir dosyayı tekrar verir.
Rik

@Rik Ne yazık ki, bu yeterli değildir, çünkü portun kendisi doğru görevi tanımlamak için yeterli değildir, bu yüzden komut satırı argümanlarını da görmek gerekir.
István Zachar

Aynı bağlantı noktasında dinleyen birden fazla program düşünülemiyor ... :) Ama parametreleri almak mümkün olmalı ... process explorerSysinternals'dan gui'de bunları gösterebilir. Yani bilgi bir yerde olmalı.
Rik

Powershell komutu için kullanımınız var mı? Beğen <<< Get-WmiObject win32_process -Filter "'% test.exe' gibi bir ad" | | CreationDate, ProcessId, CommandLine | ft -AutoSize` >>> Buraya
Rik

@Rik, bağlantı noktası elbette farklı, ama görevin öldürmem gereken görev olup olmadığını kontrol etmek için komut satırı argümanlarını da almam gerekiyor.
István Zachar

Yanıtlar:


35

Buna ne dersin:

wmic process where caption="test.exe" get commandline

Bunu yaparsanız, ProcessId'i de öldürürsünüz:

wmic process where caption="test.exe" get commandline,processid

wmicayrıca csv çıkışına bir geçiş vardır. Yani:

wmic /output:c:\temp\proc.csv process where caption="test.exe" get commandline,processid /format:csv

Not: Son biriyle bir hata alırsanız ( Invalid XSL format (or) file name) kopyalamak için gereken csv.xmldan %WINDIR%\System32\wbem\en-USiçin %WINDIR%\System32\wbem. Bu hatayı buradan okuyabilirsiniz .


PowerShell'i de kullanabilirsiniz:

Get-WmiObject win32_process -Filter "name like '%test.exe'"|select CreationDate,ProcessId,CommandLine|ft -AutoSize`

Teşekkürler, hepsi bu, wmicsorunu çözdü ve bu gün sona erdi. :)
István Zachar

1
Mükemmel - bu aslında tam komut satırını verir. Görev yöneticisinde, yalnızca ilk 300 karakteri gösterir.
ArtOfWarfare
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.