Strona główna CMD C++ Hardware HTML i javascript Java Software SQL flag_united_kingdom flag_poland

CMD (Win7) - pobranie wszystkich numerów sesji w systemie.

Dodano: 2011-08-20

Obróbka danych przy użyciu linii komend w systemie Windows jest dosyć prosta (kiedyś myślałem inaczej), lecz nie tak intuicyjna jak w systemach z rodziny Linux (nie można mieć wszystkiego).

Pracując w systemie, na którym jest zalogowanych wielu użytkowników, często chcemy pobrać numery sesji jakie są aktywne w systemie, by coś z nimi zrobić np.: wylogować wszystkich użytkowników prócz nas :), by móc wykonać operacje, które tego wymagają.

Poniżej znajduje się skrypt, który pobiera wszystkie numery aktywnych sesji w systemie. Do uzyskania numerów sesji można użyć komendę tasklist, następnie zrzucić dane, które ona zwraca do pliku tekstowego by móc je przeanalizować.

Skrypt poniżej pobiera także id, na którym właśnie pracujemy, dlatego może on też w przypadku dodania komendy logout wylogować nas, czego by wiele osób nie chciało. Jednym ze sposobów jest wyizolowanie nazwy obrazu „tasklist.exe” i usunięciu sesji o numerze, którą on posiada. Oczywiście zawsze istnieje ryzyko, że ktoś jeszcze uruchomił tasklist :( Warto dodać kolejny warunek do skryptu.

Drukuj Zaznacz kod
id_user_session.bat
@echo off
setlocal EnableDelayedExpansion
cls

@echo Skrypt pobierajacy numery sesji dzialacych procesow w sysemie.
@echo Dane zostana zapisane do pliku "id_user_session.txt"

tasklist /NH > id_user_session.tasklist

set firstLoop=0
set isInFile=0
for /f "tokens=3,4 delims= " %%a in (id_user_session.tasklist) DO (
	@echo %%a %%b
	if [!firstLoop!] EQU [0] (
		@echo %%b > id_user_session.txt 
		@echo nadpisanie...
		set firstLoop=1
	)

	set isInFile=0
	for /f %%i in (id_user_session.txt) DO (
		if [%%b] EQU [%%i] set isInFile=1 
	) 

	if [!isInFile!] EQU [0] (
		@echo ID %%b nie bylo w pliku.
		@echo %%b >> id_user_session.txt 
	) else (
		@echo ID %%b juz jest!!!
	)

)

@echo Koniec skryptu.
pause