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.