web-dev-qa-db-ja.com

リモートでロックまたはロック解除されたリモートWindows画面を確認する

ドメイン環境にいくつかのWindows 7/2008ワークステーションがあります。 GPOだれも作業していない場合にウィンドウを自動ロックします(アイドル)(スクリーンセーバーはロックしない)

リモートワークステーションがロックされているかロック解除されているかをリモートで確認するにはどうすればよいですか? quserコマンドを使用してユーザーにクエリを実行しようとしました(ウィンドウがロックされているユーザーまたはウィンドウがロック解除されている別のユーザーでテスト済み、同じ結果)

C:\>psexec \\REMOTEPC1 quser

 USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
 USER1                 console             1  Active      none   1/24/2017 11:21 AM

上記の結果はSTATE = ACTIVEを示していますが、ワークステーションがロック/ロック解除されているかどうかを照会できません。コマンドまたはメソッドで必要な結果を即座に取得する方法

6
Syed Jahanzaib

投稿を更新するのを忘れました。私はUbuntuボックスを使用して、Webmin/BASHスクリプトを使用してほとんどのActive Directory機能を管理しているため、ユーザーセッションにログインしているリモートウィンドウとウィンドウのロック/ロック解除ステータスを照会する小さなbashスクリプトを作成しました。

結果:

root@linux:/temp# /temp/winuserstatus.sh WORKSTAION-1

Remote PC = WORKSTAION-1
IP Details =
Address: 10.0.0.20
Address: 10.0.0.21

User Status = Logged in User found ... details as below ...
jahan.zaib console 13 Active 1+00:53 1/23/2017 1:57 PM
Windows Status = Windows is LOCKED

Bashスクリプトは次のことを行います…

  • リモートPCのPINGステータスを確認し、pingが失敗した場合はエラーで終了します

ローカルDNSを使用してNSLOOKUP経由でリモートWindows IPを取得する

現在ログインしているユーザーとそのステータス

ロック/ロック解除されたウィンドウの現在のステータス。

結果をトリムし、好みに応じて表示します

詳細を掲載しました こちら

2
Syed Jahanzaib

ワークステーションがロック/ロック解除されているかどうかを照会できません

次のPowerShellスクリプト(GetRemoteLogonStatus.ps1)を使用します。

このスクリプトは、ローカルマシンまたはリモートマシンのログオンステータスを返します。戻り値の種類には、「ログオンしていない」、「ロック」、「ログオン」、「オフライン」があります。これの最も有用な部分は、コンピュータがロック状態にあるかどうかを確認することですが、他の戻り値の種類も役立つ場合があります。

これは単純な関数で、大きなスクリプトに簡単に組み込むことができます。戻り値をより簡単に解析できるように、呼び出しタイプの戻り値の型を数値に変更できます。

# This function will return the logged-on status of a local or remote computer 
# Written by BigTeddy 10 September 2012 
# Version 1.0 
# Sample usage: 
# GetRemoteLogonStatus '<remoteComputerName>' 

function GetRemoteLogonStatus ($computer = 'localhost') { 
if (Test-Connection $computer -Count 2 -Quiet) { 
    try { 
        $user = $null 
        $user = gwmi -Class win32_computersystem -ComputerName $computer | select -ExpandProperty username -ErrorAction Stop 
        } 
    catch { "Not logged on"; return } 
    try { 
        if ((Get-Process logonui -ComputerName $computer -ErrorAction Stop) -and ($user)) { 
            "Workstation locked by $user" 
            } 
        } 
    catch { if ($user) { "$user logged on" } } 
    } 
else { "$computer Offline" } 
}

ソース リモートログオンステータスの取得-Powershell

2
DavidPostill