Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

リモートコンピュータにログインしている現在のユーザーを検索する

多くの場合、管理者はリモートのWindowsコンピューターにログインしているユーザー名をすばやく見つける必要があります。この記事では、リモートコンピューターにログオンしているユーザーの名前を取得するのに役立つツールとPowerShellスクリプトをいくつか紹介します。

内容:

  • PSLoggedOnとQwinstaでログインしているユーザーを確認する
  • PowerShellを使用してリモートコンピューターで現在のユーザーを取得するにはどうすればよいですか?
  • リモートコンピューターでログオンしているユーザーを検索するためのPowerShellスクリプト

PSLoggedOnとQwinstaでログインしているユーザーを確認する

MicrosoftのSysInternalsPSToolsには、 PSLoggedOn.exeと呼ばれるコンソールユーティリティが含まれています。 これを使用して、リモートコンピューターにログインしているユーザーの名前と、それに接続されているSMBセッションのリストを取得できます。

ツールをダウンロードして実行します:

psloggedon \\RemoteCompName

リモートコンピュータにログインしている現在のユーザーを検索する

ご覧のとおり、ツールはログオンしたユーザーの名前を返しました(ローカルにログオンしたユーザー )およびネットワーク経由でこのコンピューターのSMBリソースにアクセスするユーザーのリスト(リソース共有を介してログオンしたユーザー

ローカルにログオンしているユーザーの名前のみを取得する場合は、 -lを使用します オプション:

Psloggedon.exe \\pc1215wks1 –l

PSLoggedOnはレジストリに接続し、ローカルにログオンしているユーザーの名前を確認します。これを行うには、 RemoteRegistry サービスが実行されている必要があります。 PowerShellを使用して自動サービススタートアップを実行および構成できます

Set-Service RemoteRegistry –startuptype automatic –passthru
Start-Service RemoteRegistry

組み込みのqwinstaを使用して、リモートコンピューター上のセッションのリストを取得することもできます。 道具。このツールは、リモートデスクトップサービス(RDS)端末環境を管理するすべての管理者に精通している必要があります。リモートコンピュータからログに記録されたユーザーセッションのリストを取得するには、次のコマンドを実行します。

qwinsta /server:be-rdsh01

リモートコンピュータにログインしている現在のユーザーを検索する

このツールは、RDSサーバーまたはデスクトップWindows 10(11)エディション(複数のRDP接続を許可した場合でも)上のすべてのセッション(アクティブでRDPタイムアウトによって切断された)のリストを返します。

エラー5アクセスが拒否されました qwinstaを使用してリモートサーバーに接続する場合は、リモートホストがRPCを介してユーザーをリモート管理できることを確認してください。必要に応じて、次のコマンドまたはGPOを使用してレジストリで有効にします。

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v "AllowRemoteRPC" /t "REG_DWORD" /d "1" /f

PowerShellを使用してリモートコンピューターで現在のユーザーを取得するにはどうすればよいですか?

Win32_ComputerSystem を使用して、コンピューターにログオンしているユーザーの名前を取得できます。 WMIクラス。 PowerShellコンソールを開き、次のコマンドを実行します:

Get-WmiObject -class Win32_ComputerSystem | Format-List Username

このコマンドは、コンピューターにログオンしているユーザーの名前を返します。

リモートコンピュータにログインしている現在のユーザーを検索する

Get-WmiObjectコマンドレットには–ComputerNameがあります リモートコンピューター上のWMIオブジェクトにアクセスするために使用できるオプション。次のコマンドは、リモートコンピューターからログインしたユーザー名を返します。

(Get-WmiObject -class Win32_ComputerSystem –ComputerName pc1215wks1).Username

リモートコンピュータにログインしている現在のユーザーを検索する

このコマンドは、(RDPを介さずに)コンソールにログオンしているユーザーのみを表示します。

PSRemotingを使用して、Invoke-Commandコマンドレットを使用してリモートコンピューターから情報を取得することもできます。

リモートコンピューター(ドメインなし)でのみユーザー名を取得できます。次のコマンドを使用してください:

$userinfo = Get-WmiObject -ComputerName pc1215wks1 -Class Win32_ComputerSystem
$user = $userinfo.UserName -split '\\'
$user[1]

最新のPowerShellCore(pwsh.exe)バージョンでは、 Get-CimInstanceを使用する必要があります Get-WmiObjectの代わりにコマンドレット :

Get-CimInstance –ComputerName pc1215wks1 –ClassName Win32_ComputerSystem | Select-Object UserName

または:

(Get-CimInstance -ComputerName pc1215wks1 -ClassName Win32_ComputerSystem).CimInstanceProperties | where{$_.Name -like "UserName"}| select value

リモートコンピュータにログインしている現在のユーザーを検索する

GetCiminstanceはWinRMを使用してリモートコンピューターに接続するため、GPOまたは次のコマンドを使用してリモートコンピューターでWinRMを有効にして構成する必要があります。

WinRM quickconfig

リモートコンピューターでログオンしているユーザーを検索するPowerShellスクリプト

複数のコンピューターからログインしているユーザーに関する情報を収集する場合は、次のPowerShell関数を使用してユーザー名を取得できます。

function Get-LoggedUser
{
    [CmdletBinding()]
    param
    (
        [string[]]$ComputerName 
    )
    foreach ($comp in $ComputerName)
    {
        $output = @{'Computer' = $comp }
        $output.UserName = (Get-WmiObject -Class win32_computersystem -ComputerName $comp).UserName
        [PSCustomObject]$output
    }
}

Get-LoggedUserを使用して、ユーザー名を確認するコンピューターの名前を指定します。

Get-LoggedUser pc1215wks1,pc1215wks2,mun-dc01

リモートコンピュータにログインしている現在のユーザーを検索する

関数がコンピューターの空のユーザー名を返す場合は、誰もログオンしていないことを意味します。

ActiveDirectoryドメイン内のコンピューターにログオンしているユーザーの名前を取得できます。 Get-ADComputerコマンドレットを使用して、ドメイン内のコンピューターのリストを取得します。以下の例では、特定のドメインOU内のアクティブなコンピューターに記録されているユーザー名を取得します。リモートコンピューターにアクセスする前にスクリプトをより高速に動作させるために、ICMP pingとTest-NetConnectionコマンドレットを使用してスクリプトの可用性のチェックを追加しました:

function Get-LoggedUser
{
    [CmdletBinding()]
    param
    (
        [string[]]$ComputerName 
    )
    foreach ($comp in $ComputerName)
    {
        if ((Test-NetConnection $comp -WarningAction SilentlyContinue).PingSucceeded -eq $true) 
            {  
                $output = @{'Computer' = $comp }
                $output.UserName = (Get-WmiObject -Class win32_computersystem -ComputerName $comp).UserName
            }
            else
            {
                $output = @{'Computer' = $comp }
                         $output.UserName = "offline"
            }
         [PSCustomObject]$output 
    }
}
$computers = (Get-AdComputer -Filter {enabled -eq "true"} -SearchBase 'OU=Berlin,DC=woshub,DC=com').Name
Get-LoggedUser $computers |ft -AutoSize

リモートコンピュータにログインしている現在のユーザーを検索する

また、ログオンしたユーザーの名前をADのコンピューターのプロパティに保存できることに注意してください。これを行うには、「Set-ADComputer:ADコンピューターのプロパティにユーザー情報を追加する方法」の記事で説明されているログオンスクリプトを使用できます。

その後、特定のユーザーがログオンしている場所を見つけるためにすべてのコンピューターをスキャンする必要はありません。 Active Directoryへの簡単なクエリを使用してユーザーコンピュータを見つけることができます:

$user='m.smith'
$user_cn=(Get-ADuser $user -properties *).DistinguishedName
Get-ADComputer -Filter "ManagedBy -eq '$user_cn'" -properties *|select name,description,managedBy|ft


  1. Windows 10 でリモート デスクトップがコンピューターを検出できない問題を修正する方法

    リモートデスクトップでコンピュータが見つからない?同じネットワークに接続されている他の PC との接続を確立できませんか?あなたは正しい場所に来ました。この問題は、いくつかの回避策に従うことで簡単に修正できます。 Windows リモート デスクトップは、同じネットワーク上にある他の PC やシステムにリモートで接続できる最も便利なアプリの 1 つです。ただし、リモート デスクトップ ユーティリティの使用中に他の PC が見つからない場合は、この問題を解決するのに役立つトラブルシューティングのヒントをいくつか紹介します。 Windows 10 でリモート デスクトップがコンピューターを検

  2. コンピュータに誰がいつログインしたかを調べる方法

    信じられないかもしれませんが、あなたはスヌーピーで好奇心旺盛な人々に囲まれています。誰かがあなたのコンピューターを無断で使用したような気がするかもしれませんが、誰にも指を向けることはできません。あなたの親友、迷惑なルームメイト、好奇心旺盛な兄弟など、誰でも構いません。 プライバシーを確​​保し、疑いが正しいかどうかを確認するために、誰があなたのマシンに干渉したかをいつでも確認できます。 今思うかもしれませんが、私のコンピュータはパスワードで保護されており、誰もログインできません。他の多くの方法があり、人々があなたのデバイスにログインして悪意のある活動を行ったり、あなたの ID から卑劣なメッセ