Centrum Skryptów - Systemy Operacyjne

Jak sprawdzić, jakie skrypty działają na komputerze?

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

Jak sprawdzić, jakie skrypty działają na komputerze?

Cześć Skrypciarze! Jak sprawdzić, jakie skrypty są uruchomione na komputerze?

-- NW

Cześć NW. To jest to pytanie, na które zawsze odpowiadamy trochę niechętnie, bo istnieje bardzo duże prawdopodobieństwo (mniej więcej pół na pół), że rozczaruje Cię to, co usłyszysz. Jeśli pracujesz na Windows 2000 (lub wcześniejszej wersji) odpowiedź jest prosta: nie da się tego sprawdzić. Skrypt taki jak ten – zajmujący się wszystkimi procesami działającymi pod Cscript.exe i Wscript.exe – może powiedzieć nam, że na komputerze działają jakieś skrypty:

strComputer = "."

Set objWMIService = GetObject("winmgmts:" _

    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery _

    ("Select * from Win32_Process Where Name = 'cscript.exe'" & _

        " OR Name = 'wscript.exe'")

For Each objItem in colItems

    Wscript.Echo objItem.Name

Next

Nie jest jednak w stanie podać nazw tych skryptów. Z tego, co nam wiadomo, w systemie operacyjnym nie ma żadnego narzędzia, które mogłoby zidentyfikować skrypty działające na komputerze z Windows 2000; nawet Menedżer Zadań podaje tylko nazwy procesów (Cscript.exe i Wscript.exe).

Jeśli jednak pracujesz na Windows XP lub Windows Server 2003, mamy dla Ciebie inną – lepszą – odpowiedź. W Windows XP dodano do klasy Win32_Process nową właściwość – CommandLine, czyli wiersz polecenia. Jak wskazuje nazwa, CommandLine podaje polecenie, użyte do rozpoczęcia procesu. Na przykład, załóżmy, że rozpocząłeś skrypt wpisując csript my_script.vbs w wierszu polecenia. Właściwość CommandLine dla tego skryptu będzie wyglądała tak:

cscript my_script.vbs

Innymi słowy, wiesz już, że na komputerze uruchomiony jest skrypt o nazwie My_Script.vbs.

Ale co jeśli nie użyłeś wiersza polecenia by rozpocząć skrypt, jeśli kliknąłeś dwa razy na ikonę w Eksploratorze Windows i uruchomiłeś skrypt pod Wscript? Żaden problem. Powiedzmy, że kliknąłeś na plik C:\Scripts\My_Script.vbs; w wierszu polecenia otrzymasz następującą wartość:

C:\WINDOWS\System32\WScript.exe "C:\Scripts\My_Script.vbs"

Jak widzisz, otrzymaliśmy ścieżkę do wykonywalnego pliku Wscript, wraz ze ścieżką do skryptu, który właśnie działa. Tak już lepiej, prawda?

W każdym razie, jeśli pracujesz na Windows XP lub Windows Server 2003, oto skrypt, który to dla Ciebie załatwi:

strComputer = "."

Set objWMIService = GetObject("winmgmts:" _

    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery _

    ("Select * from Win32_Process Where Name = 'cscript.exe'" & _

        " OR Name = 'wscript.exe'")

For Each objItem in colItems

    Wscript.Echo objItem.CommandLine

Next

  Do początku strony  Do początku strony


Centrum Skryptów - Systemy Operacyjne