Uzak Windows makinelerinde kimlerin oturum açtığını algılama


9

Uzaktaki Windows makinelerinde kimlerin oturum açtığını nasıl öğrenirsiniz?

Şu anda pslogon kullanıyorum , ama bana her seferinde sadece bir bilgisayar veriyor.

psloggeon \\ 172.21.0.5

PsLoggedOn

Bütün bir alt ağı taramanın daha iyi bir yolu var mı? Tercihen bazı GUI uygulamaları.

Yanıtlar:


9

GUI değil, ancak:

for /L %x in (2,1,254) do psloggedon \\172.21.0.%x

172.21.0.2-254'ten itibaren tarama yapacaktır. Ayrıca şunları da iç içe yerleştirebilirsiniz:

for /L %z in (16,1,31) do for /L %x in (1,1,254)  do psloggedon \\172.21.%y.%x

Bu, 172.21. {16-31} .x alt ağlarını tarar.


İyi, ama sorun her IP adresini denemesidir. Bir ana bilgisayar etkin değilse, devam etmeden önce 30 saniye kadar orada asılı kalır. Çıktı da biraz dağınık.
Jindrich

makineye karşı bir ping (ping xxxx -n 1) yapabilir ve çıktısını kontrol edebilirsiniz, böylece herhangi bir makineye karşı zaman aşımı ping için bir saniyedir
benPearce

8

Bu senaryoyu buldum . Tüm etki alanını tarar ve size güzel bir çıktı (bilgisayar adı ve kullanıcı adı) verir.

whoisokedinwhere.bat> kullanıcılar.txt

@Eko kapalı
setlocal
/ f "Tokens = 1" için %% c ('net view / domain: "% USERDOMAIN%" ^ | Findstr / L / C: "\\"') do (
 / f "Tokens = *" için %% u ('PsLoggedOn -L %% c ^ | find / i "% USERDOMAIN% \"') için (
  çağrı: %% c "%% u" rapor et
 )
)
endlocal
Git: EOF
:bildiri
iş ayarla =% 1
set comp =% iş: ~% 2
kullanıcı ayarla =% 2
set user =% kullanıcı: "=%
çağrı kümesi kullanıcı = %% kullanıcı: *% USERDOMAIN% \ = %%
@echo% comp%% kullanıcı%

Bu komut dosyası PsLoggedOn kullanıyor .



2

AD Kullanıcıları ve Bilgisayarları'ndaki her şeyi görmemi, arama yapmamı vb. Sağlayan bir oturum açma komut dosyası kullanarak kullanıcı adını bilgisayar açıklaması özelliğine yazıyorum. Çok kullanışlı.


1

Sunucular Terminal Hizmetleri çalıştırıyorsa, bir etki alanındaki sunucuları ve oturum açan kişileri görüntülemek için Terminal Hizmetleri Yöneticisi'ni kullanabilirsiniz. GUI'dir ve altında bulunabilir

Start -> Administrative Tools -> Terminal Services Manager

1

qwinsta başka bir dos komutudur, ama yine de size her seferinde sadece bir tane verir ...

C:\>qwinsta /server:test_srv
 SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
 console           test_usr                  0  Active  wdcon
 rdp-tcp                                 65536  Listen  rdpwd

1

Aşağıdaki PowerShell betiği aracılığıyla WMI'yı sorgulayarak bir iş istasyonunda yerel olarak oturum açmış bir kullanıcıyı algılayabilirsiniz . Yerel olarak oturum açan kişinin adını veya boş dizeyi döndürür.

function logged_in($host_name) {
    (get-wmiobject -class Win32_ComputerSystem -computername $host_name `
        -namespace "root\CIMV2").UserName
}

0

Nerede bulduğumdan emin değilim ama bu kodu bir makinedeki kullanıcıları gösteren etrafında yerleştiriyorum. Bir grup makineyi taramak için her döngü için bunu bir sargıya sarabilirsiniz. Bir sistemde kimin oturum açtığını bilmek istiyorsanız, en basit yol giriş denetimini açmak ve güvenlik günlüğüne (veya sorgulamaya) bakmaktır. Herhangi bir anda kimin olduğunu görmek için kod:

' PARAMETERS
'
strComputer = "machineName"   ' use "." for local computer 
strUser = "domain\user" ' comment this line for current user
strPassword = "password" ' comment this line for current user

' CONSTANTS
'
wbemImpersonationLevelImpersonate = 3
wbemAuthenticationLevelPktPrivacy = 6

'=======================================================================
' MAIN
'=======================================================================

' Connect to machine
'
If Not strUser = "" Then

    ' Connect using user and password
    '
    Set objLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objWMI = objLocator.ConnectServer _
        (strComputer, "root\cimv2", strUser, strPassword)
    objWMI.Security_.ImpersonationLevel = wbemImpersonationLevelImpersonate
    objWMI.Security_.AuthenticationLevel = wbemAuthenticationLevelPktPrivacy

Else

    ' Connect using current user
    '
    Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 

End If

' Get OS name
'
Set colOS = objWMI.InstancesOf ("Win32_OperatingSystem")

For Each objOS in colOS
    strName = objOS.Name
Next

If Instr(strName, "Windows 2000") > 0 Then

    '-------------------------------------------------------------------
    ' Code for Windows 2000
    '-------------------------------------------------------------------

    ' Get user name
    '
    Set colComputer = objWMI.ExecQuery("Select * from Win32_ComputerSystem")

    For Each objComputer in colComputer
        Wscript.Echo "User: " & objComputer.UserName
    Next

    ' ------------------------------------------------------------------

Else

    ' ------------------------------------------------------------------
    ' Code for Windows XP or later
    ' ------------------------------------------------------------------

    ' Get interactive session
    '
    Set colSessions = objWMI.ExecQuery _ 
          ("Select * from Win32_LogonSession Where LogonType = 2") 

    If colSessions.Count = 0 Then 
        ' No interactive session found
        '
        Wscript.Echo "No interactive user found" 
    Else 
        'Interactive session found
        '
        For Each objSession in colSessions 

            Set colList = objWMI.ExecQuery("Associators of " _ 
            & "{Win32_LogonSession.LogonId=" & objSession.LogonId & "} " _ 
            & "Where AssocClass=Win32_LoggedOnUser Role=Dependent" ) 

            ' Show user info
            '
            For Each objItem in colList 
                WScript.Echo "User: " & objItem.Name 
                WScript.Echo "FullName: " & objItem.FullName 
                WScript.Echo "Domain: " & objItem.Domain 
            Next 

            ' Show session start time
            '
            Wscript.Echo "Start Time: " & objSession.StartTime 
        Next 
    End If 

    ' ------------------------------------------------------------------

End If

'=======================================================================

0

Henüz kimsenin logon2'den bahsetmediğine şaşırdım, bu da birkaç yıldır kullanıyorum. İstediğiniz GUI uygulamasıdır ve buradan ulaşabilirsiniz .


Bunu Windows 7'de çalıştırdığımda hatayı alıyorum: Hata - Çıkma. ServerBrowseDialogA0 için giriş noktası bulunamadı. Belki Win7'de çalışmıyor? Hatasız çalıştırmak için yönetici haklarına mı ihtiyacınız var?
Steve

@Steve, şimdi neden kimsenin yayınlamadığını biliyorum. Haklısın, Win 7'de çalışmıyor, en azından 64 bit sürümünde değil. Bir XP makinesinden gerekli DLL'leri kopyalayıp çalıştıramayacağımı göreceğim. Herhangi bir başarım olursa size haber vereceğim.
John Gardeniers
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.