はじめに
PowerShellのコマンドレット「Invoke-Command」とWindowsの標準コマンド「quser」、「logoff」を使用してサインアウトします。
quserコマンドは、現在のPCにログオンしているすべてのユーザーを表示します。logoffコマンドはその名の通りログオフするコマンドです。
ドメイン環境であれば、Windowsの標準コマンドを使用した方が良いです。
quser /server:<サーバー名>
tsdiscon /server:<サーバー名> /V
logoff /server:<サーバー名> /V
環境
- Windows Server 2019 Datacenter Evaluation
- Windows Server 2016 Datacenter Evaluation
- Windows Server 2012 R2 Datacenter
- Windows Server 2008 R2 Datacenter
- Windows Server 2003 Standard Edition SP2
- Windows 10 Enterprise Evaluation
各サーバとクライアントはドメインに参加しており、Windows10から各種コマンドを操作するものとします。
サインアウト
Windows10のPCからリモートでサインアウトを実行します。
ドメイン環境
Windows Server 2019/2016/2012/2008/2003でユーザーをサインアウトする
Windows Server 2019にサインインしているユーザーを確認します。「Invoke-Command」でリモートサーバ上で「quser」コマンドを実行し結果を取得しています。
Invoke-Command -ComputerName ホスト名(IPアドレス) -ScriptBlock {quser}
アイドル
ユーザー名 セッション名 ID 状態 時間 ログオン時刻
user1 console 2 Active none 2019/12/15 17:50
上記の結果からuser1アカウントでローカルにサインインしていることがわかります。user1をサインアウトします。ID番号の2を使用します。
Invoke-Command -ComputerName ホスト名(IPアドレス) -ScriptBlock {logoff 2}
ワークグループ環境
Windows Server 2019/2016/2012/2008/2003でユーザーをサインアウトする
Windows Server 2019にサインインしているユーザーを確認します。「Invoke-Command」でリモートサーバ上で「quser」コマンドを実行し結果を取得しています。
Invoke-Command -ComputerName ホスト名(IPアドレス) -ScriptBlock {quser} -Credential (New-Object System.Management.Automation.PSCredential("ユーザー名", (ConvertTo-SecureString –String "パスワード" –AsPlainText -Force)))
アイドル
ユーザー名 セッション名 ID 状態 時間 ログオン時刻
administrator console 1 Active none 2019/10/23 20:12
user1 rdp-tcp#3 2 Active . 2019/10/23 20:24
上記の結果からAdministratorアカウントでローカルにサインインしていることがわかります。user1はリモートデスクトップで接続していることがわかります。user1をサインアウトします。ID番号の2を使用します。
Invoke-Command -ComputerName ホスト名(IPアドレス) -ScriptBlock {logoff 2} -Credential (New-Object System.Management.Automation.PSCredential("ユーザー名", (ConvertTo-SecureString –String "パスワード" –AsPlainText -Force)))