回答:
GUIではありませんが、
for /L %x in (2,1,254) do psloggedon \\172.21.0.%x
172.21.0.2-254からスキャンを実行します。ネストすることもできます:
for /L %z in (16,1,31) do for /L %x in (1,1,254) do psloggedon \\172.21.%y.%x
これにより、172.21。{16-31} .xサブネットがスキャンされます。
このスクリプトを見つけました。ドメイン全体をスキャンし、優れた出力(コンピューター名とユーザー名)を提供します。
whoisloggedinwhere.bat> users.txt
@エコーオフ セットローカル / f "Tokens = 1" %% cの場合( 'net view / domain: "%USERDOMAIN%" ^ | Findstr / L / C: "\\"')do( / f "Tokens = *" %% u in( 'PsLoggedOn -L %% c ^ | find / i "%USERDOMAIN%\"')do( 呼び出し:レポート%% c "%% u" ) ) エンドローカル goto:EOF :報告する 仕事=%1を設定 comp =%work:〜2%を設定 ユーザーを設定=%2 set user =%user: "=% コールセットユーザー= %% user:*%USERDOMAIN%\ = %% @echo%comp%%user%
このスクリプトはPsLoggedOnを使用します。
ログオンスクリプトを使用してコンピューターの説明のプロパティにユーザー名を書き込みます。これにより、ADユーザーとコンピューターですべてを表示したり、検索を実行したりできます。とても便利な。
サーバーがターミナルサービスを実行している場合は、ターミナルサービスマネージャーを使用して、ドメイン内のサーバーとログオンしているサーバーを表示できます。これはGUIであり、以下にあります
Start -> Administrative Tools -> Terminal Services Manager
次のPowerShellスクリプトを使用してWMIを照会することにより、ワークステーションにローカルにログオンしているユーザーを検出できます。ローカルにログオンしているユーザーの名前または空の文字列を返します。
function logged_in($host_name) {
(get-wmiobject -class Win32_ComputerSystem -computername $host_name `
-namespace "root\CIMV2").UserName
}
どこで取得したのかはわかりませんが、マシンのユーザーを示すこのコードを配置しています。これをfor eachループでラップして、多数のマシンをスキャンできます。システムに誰がログオンしているかを知りたい場合、最も簡単な方法は、ログイン監査をオンにして、セキュリティログを確認(またはクエリ)することです。以下は、ある時点で誰がオンになっているかを確認するコードです。
' 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
'=======================================================================