W bazie danych mogę uzyskać listę wszystkich aktualnie uruchomionych procesów oraz polecenie sql, które je uruchomiło.
Chciałbym zrobić podobną rzecz na oknie systemu Windows.
Mogę uzyskać listę procesów, ale nie wiersz poleceń, który je rozpoczął.
Moje pytanie brzmi: biorąc pod uwagę PID w systemie Windows - jak znaleźć instrukcję wiersza poleceń, która ją wykonała?
Założenia:
- Windows 7 i równoważne serwery
windows
windows-command-prompt
pid
Sokole Oko
źródło
źródło
| FL
na końcu polecenia. To rozszerza całą linię poleceń dla mnie. Może także chcesz zagrać z| Select -ExpandProperty CommandLine
Aby uzyskać dostęp do tych informacji, możesz skorzystać z podsystemu WMI, używając WMIC.EXE. Zakładając, że PID wynosi 600:
Możesz także wyszukać nazwę lub inną cechę procesu. Użyj tego polecenia, aby wyświetlić listę wszystkich atrybutów:
źródło
process
aliasu zamiastpath Win32_Process
; np.wmic.exe process get
Inne odpowiedzi to z pewnością dobre opcje, które będą dobrze służyć w zautomatyzowanym systemie ze względu na ich charakter linii poleceń (i widzę po tagu, że tego właśnie chciałeś). Oczywiście niektórzy ludzie mogą chcieć odkryć tego rodzaju informacje za pomocą GUI, więc oto alternatywa w tym zakresie.
Process Explorer to narzędzie Sysinternals obsługiwane przez Microsoft. Może wyświetlać wiersz polecenia procesu w oknie dialogowym właściwości procesu, a także element nadrzędny, który go uruchomił, chociaż nazwa tego procesu może nie być już dostępna. Oto okno dialogowe właściwości procesu:
Jeśli potrzebujesz bardziej szczegółowej ścieżki audytu, kiedy proces został uruchomiony i na jakich warunkach, możesz przejść do innego narzędzia Sysinternals o nazwie Process Monitor. Tutaj możesz filtrować zdarzenia „Rozpoczęty proces”, dowiedzieć się o środowisku, w którym proces został uruchomiony, i zobaczyć, jakie inne zdarzenia miały miejsce w tym czasie. To dość potężny program. Oto okno dialogowe właściwości zdarzenia:
źródło
Command Line
kolumna została dodana, jeśli najedziesz myszką na tę kolumnę.W celu uzupełnienia użytecznej odpowiedzi PowerShell Ryan Ries' z krótszym alternatywa poprzez
-Filter
parametr , który również wykorzystujeGet-CimInstance
zamiast przestarzałe-od-v3Get-WmiObject
cmdlet .Ten
-Filter
parametr zasadniczo umożliwia przekazanieWHERE
klauzuli instrukcji WQL zamiast przekazywania pełnej instrukcji zapytania-Query
.źródło