Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Получение списка всех процессов

Ответить
Настройки темы
CMD/BAT - [решено] Получение списка всех процессов

Пользователь


Сообщения: 63
Благодарности: 0

Профиль | Отправить PM | Цитировать


Подскажите как получить список ВСЕХ процессов с "временем запуска"?
Получить дату и время запуска всех процессов в текстовый файл.
По возможности не на PowerShell. cmd,bat.

Отправлено: 05:56, 03-01-2020

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6621
Благодарности: 1527

Профиль | Отправить PM | Цитировать


CMD:
Код: Выделить весь код
powershell -command "Get-Process |select name,starttime |Out-File c:\temp\processlist.txt"

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:49, 03-01-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
>"c:\temp\processlist.txt" wmic.exe Process get Name, CreationDate
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:21, 03-01-2020 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6621
Благодарности: 1527

Профиль | Отправить PM | Цитировать


Iska, а формат даты можно как-нибудь подкрутить?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 10:27, 03-01-2020 | #4


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


DJ Mogarych, я догадываюсь, что топикстартеру, всё едино: что водка, что пулемёт - лишь бы с ног валило
и самому мне нравится PowerShell, но давайте всё же придерживаться заданной тематики
PoSh - не панацея:
1. Он не всегда есть - в том же PE, контейнерах
2. Он тяжело запускается - "примитивный" healthcheck, реализованный подобным образом, выжирает нереально много ресурсов

Отправлено: 10:55, 03-01-2020 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


DJ Mogarych, напрямую — боюсь, что нет. Возможно, этого можно добиться, поковырявшись во внутренностях C:\Windows\System32\wbem, но я не жажду . Wbem-то рассчитано в первую очередь на работу с приложениями посредством Automation, а wmic.exe — это такой паллиатив, появившийся в Windows XP — для тех, кто не сумел в тот же WSH.

Кроме того, можно разобрать вывод wmic.exe посредством for /f, и там слепить, что потребно. Наподобие:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

>"c:\temp\processlist.txt" (
	echo Creation Date/Time	Name
	
	for /f "usebackq skip=2 tokens=1,2" %%i in (`wmic.exe Process get Name^, CreationDate ^| findstr.exe /i /r /c:"^[0-9]"`) do (
		set sDateTime=%%i
		echo !sDateTime:~6,2!.!sDateTime:~4,2!.!sDateTime:~0,4! !sDateTime:~8,2!:!sDateTime:~10,2!:!sDateTime:~12,2!	%%~j
	)
)

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:03, 03-01-2020 | #6


Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


VBS. Добавил еще полный путь к исполняемому файлу процесса
Код: Выделить весь код
With CreateObject("Scripting.FileSystemObject").CreateTextFile("Z:\Box_Out\process.txt", True)
    Out = "Creation Date        Caption and ExecutablePath"
    For Each iProc In GetObject("winmgmts:").ExecQuery("Select * From Win32_Process")
        With iProc
            DT = CStr(.CreationDate)
            Out = Out + vbCrLf + Mid(DT, 1, 4) + "." + Mid(DT, 5, 2) + "." + Mid(DT, 7, 2) + " " + Mid(DT, 9, 2) + ":" + Mid(DT, 11, 2) + ":" + Mid(DT, 13, 2) + "  " + .Caption
            If Not IsNull(.ExecutablePath) Then Out = Out + "  " + .ExecutablePath
        End With
    Next
    .Write Out
    .Close
End With

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 04-01-2020 в 07:48.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:15, 03-01-2020 | #7


Пользователь


Сообщения: 63
Благодарности: 0

Профиль | Отправить PM | Цитировать


Круто! Спасибо большое! всё работает!

Конечный результат выглядит так: (???)
Код: Выделить весь код
powershell -command "Get-Process |select name,starttime |Out-File c:\temp\processlist.txt"

@echo off
setlocal enableextensions enabledelayedexpansion

>"c:\temp\processlist.txt" (
	echo Creation Date/Time	Name
	
	for /f "usebackq skip=2 tokens=1,2" %%i in (`wmic.exe Process get Name^, CreationDate ^| findstr.exe /i /r /c:"^[0-9]"`) do (
		set sDateTime=%%i
		echo !sDateTime:~6,2!.!sDateTime:~4,2!.!sDateTime:~0,4! !sDateTime:~8,2!:!sDateTime:~10,2!:!sDateTime:~12,2!	%%~j
	)
)

endlocal
exit /b 0
Или как-то изящней надо сделать?(допускаю что фигню пишу)

Последний раз редактировалось NLOLegion, 03-01-2020 в 15:51.


Отправлено: 15:28, 03-01-2020 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата NLOLegion:
допускаю что фигню пишу »
Ага. Файл c:\temp\processlist.txt у Вас создаётся дважды: сначала посредством PowerShell, а затем переписывается поверх непосредственно из кода пакетного файла.

Цитата megaloman:
Mid(DT, 1, 4) + "." + Mid(DT, 5, 2) + "." + Mid(DT, 7, 2) + " " + Mid(DT, 9, 2) + ":" + Mid(DT, 11, 2) + ":" + Mid(DT, 13, 2) »
Правильнее будет так:

Скрытый текст
Код: Выделить весь код
Option Explicit

Dim objSWbemServicesEx
Dim objSWbemDateTime
Dim objSWbemObjectEx


Set objSWbemServicesEx = WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")
Set objSWbemDateTime   = WScript.CreateObject("WbemScripting.SWbemDateTime")

WScript.Echo "Creation Date/Time" & vbTab & "Name"

For Each objSWbemObjectEx In objSWbemServicesEx.ExecQuery("SELECT Name, CreationDate FROM Win32_Process")
	objSWbemDateTime.Value = objSWbemObjectEx.CreationDate
	WScript.Echo objSWbemDateTime.GetVarDate() & vbTab & objSWbemObjectEx.Name
Next

Set objSWbemDateTime   = Nothing
Set objSWbemServicesEx = Nothing

WScript.Quit 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:58, 03-01-2020 | #9


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6621
Благодарности: 1527

Профиль | Отправить PM | Цитировать


Ещё вариант:

Код: Выделить весь код
powershell -command "gcim win32_process |select name,creationdate |Out-File c:\temp\processlist.txt"
gcim сразу даёт нормальный формат времени, в отличие от gwmi, который даёт DTMF datetime. Однако, это можно сконвертировать:

Код: Выделить весь код
powershell -command "gwmi win32_process |select name,@{n='starttime';e={$_.converttodatetime($_.creationdate)}} |Out-File c:\temp\processlist.txt"
Цитата Busla:
я догадываюсь, что топикстартеру, всё едино: что водка, что пулемёт - лишь бы с ног валило »
Из этого я и исходил. Полагаю, что если бы задача требовала каких-то спецусловий, это было бы упомянуто.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:15, 03-01-2020 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Получение списка всех процессов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] Получение списка пользователей guxjloqpoc Скриптовые языки администрирования Windows 4 14-11-2016 10:27
V. 2010 - [решено] Получение списка всех smtp-адресов сервера Riiku Microsoft Exchange Server 3 31-07-2012 18:10
[решено] Получение списка установленных программ TERMINAL AutoIt 1 17-08-2011 13:28
[решено] Получение списка неизвестных ключей реестра morgan1991 AutoIt 5 07-03-2009 00:18
[решено] Получение списка хендлов к файлу Raistlin Программирование и базы данных 13 21-10-2005 16:59




 
Переход