多くの場合、自分が複数のマシンでRDPを実行していて、接続がタイムアウトし、ログインしたままになっています。その後、どこにいたかを忘れて、アカウントがログインしたままになり、他のユーザーがそれらのマシンにアクセスできないようにします。
ドメインのユーザーにクエリを実行し、ユーザーがログインしているすべてのマシンを一覧表示する方法はありますか?
PowerShellを使用して、ユーザーがログインしている場所を見つけることができます。ただし、Active Directoryコマンドレットが必要になります。
# Import the Active Directory module for the Get-ADComputer CmdLet
Import-Module ActiveDirectory
# Query Active Directory for computers running a Server operating system
$Servers = Get-ADComputer -Filter {OperatingSystem -like "*server*"}
# Loop through the list to query each server for login sessions
ForEach ($Server in $Servers) {
$ServerName = $Server.Name
# When running interactively, uncomment the Write-Host line below to show which server is being queried
# Write-Host "Querying $ServerName"
# Run the qwinsta.exe and parse the output
$queryResults = (qwinsta /server:$ServerName | foreach { (($_.trim() -replace "\s+",","))} | ConvertFrom-Csv)
# Pull the session information from each instance
ForEach ($queryResult in $queryResults) {
$RDPUser = $queryResult.USERNAME
$sessionType = $queryResult.SESSIONNAME
# We only want to display where a "person" is logged in. Otherwise unused sessions show up as USERNAME as a number
If (($RDPUser -match "[a-z]") -and ($RDPUser -ne $NULL)) {
# When running interactively, uncomment the Write-Host line below to show the output to screen
# Write-Host $ServerName logged in by $RDPUser on $sessionType
$SessionList = $SessionList + "`n`n" + $ServerName + " logged in by " + $RDPUser + " on " + $sessionType
}
}
}
# When running interactively, uncomment the Write-Host line below to see the full list on screen
$SessionList
状況に応じてこれを微調整する必要があります。 (つまり、サーバーだけでなくコンピューターとサーバー)
ドメインのユーザーにクエリを実行し、ユーザーがログインしているすべてのマシンを一覧表示する方法はありますか?
いいえ、そうではありません。 ADのユーザーオブジェクトにアタッチする〜IsLoggedOnTo
属性のようなものはありません。ログに記録されたユーザーのリストは、各コンピューターのプロパティ/属性であるため、各コンピューターを個別にクエリする必要があります。
私は[おそらく] PowerShellとTSマネージャー/リモートデスクトップサービスを使用しますMMCスナップインで把握します...覚える、または取得するのがはるかに簡単ではなかった場合RDPウィンドウを閉じるのではなく、ログアウトする習慣を身に付けます。