Active Directoryでは、ユーザーがログインできないようにする場合は、ユーザーのアカウントを無効にするか、単にパスワードをリセットします。ただし、すでにワークステーションにログインしているユーザーがいて、そのユーザーがリソースにできるだけ早くアクセスできないようにする必要がある場合は、どうすればよいでしょうか。労働者がすぐに解雇され、ネットワークからすぐに締め出されない場合、従業員が大混乱を起こす危険がある緊急事態について話します。
数日前、私は同様のケースに直面しました。最初はどう行動したらいいのか分かりませんでした。ユーザーがネットワーク共有にアクセスするのを防ぐのは簡単ですが、これだけでは不十分です。結局、私はStop-Computer -ComputerName <name> -Force
PowerShellコマンドレットと私の場合、これで問題は解決しました。ただし、場合によっては、これは最適な選択ではない可能性があります。たとえば、遮断する必要のあるユーザーが複数のワークステーションまたは重要なサービスを提供するコンピューターにログインしていて、オフにできない場合などです。
すべてのワークステーションからのユーザーの即時ログオフをリモートで強制するための最良の解決策は何ですか?これはActive Directoryでも可能ですか?
最善の解決策:警備員が人を護衛します...
次善のソリューション:
C:\>qwinsta /? Display information about Remote Desktop Sessions. QUERY SESSION [sessionname | username | sessionid] [/SERVER:servername] [/MODE] [/FLOW] [/CONNECT] [/COUNTER] [/VM] sessionname Identifies the session named sessionname. username Identifies the session with user username. sessionid Identifies the session with ID sessionid. /SERVER:servername The server to be queried (default is current). /MODE Display current line settings. /FLOW Display current flow control settings. /CONNECT Display current connect settings. /COUNTER Display current Remote Desktop Services counters information. /VM Display information about sessions within virtual machines. C:\>logoff /? Terminates a session. LOGOFF [sessionname | sessionid] [/SERVER:servername] [/V] [/VM] sessionname The name of the session. sessionid The ID of the session. /SERVER:servername Specifies the Remote Desktop server containing the user session to log off (default is current). /V Displays information about the actions performed. /VM Logs off a session on server or within virtual machine. The unique ID of the session needs to be specified.
そのための基本的なバッチスクリプトを作成しました。パスにいくつかのunixtools
とpsexec
が必要です。
@ECHO OFF
:: Script to log a user off a remote machine
::
:: Param 1: The machine
:: Param 2: The username
psexec \\%1 qwinsta | grep %2 | sed 's/console//' | awk '{print $2}' > %tmp%\sessionid.txt
set /p sessionid=< %tmp%\sessionid.txt
del /q %tmp%\sessionid.txt
psexec \\%1 logoff %sessionid% /v
完全にADベースではありませんが、必要なことを行う必要があります。
アカウントを無効または期限切れにする
import-module activedirectory
set-aduser -identity "username" -accountexperationdate "12:09 pm"
または
set-aduser -identity "username" -enabled $false
次に、ユーザーをマシンからログオフさせます
shutdown -m "\\computername" -l
ユーザーをログオフする別の方法は、管理コマンドプロンプトから組み込みのWindowsユーティリティを使用することです
logoff 1 /SEVER:computername
これにより、リモートコンピューターからセッションID 1がログオフされます。セッションID(1がデフォルト)がわからない場合は、リモートマシンに対してquserを使用して検索できます。
Wmicを使用して、ユーザーのセッションをリモートでロックできます。
1-最初に、ユーザーパスワードを変更します。
C:\> wmic /node:[IPaddr] /user:[Admin] /password:[password] process call
create "Net User [user] [NewPassword]"
2-次に、アカウントを無効にします。
C:\> wmic /node:[IPaddr] /user:[Admin] /password:[password] process call
create "Net User [user] /active:no"
3-次に、ユーザーセッションを切断します。
C:\> wmic /node:[IPaddr] /user:[Admin] /password:[password] process call
create "tsdiscon"
現在のユーザーセッションを失うことがないため、ワークステーションのロックを解除すると、ドアにエスコートされる前に、彼が何か厄介なことをしようとしていたかどうかを確認できるようになります。
Command Line Kung Fu Blog のすべてのクレジット。そこには、セキュリティ/フォレンジック関連のクレイジーなものがたくさんあります!
更新:最初の2つの手順はローカルユーザーを対象としています。ActiveDirectory環境では実際には簡単です。アカウントを無効にし、ADでパスワードを変更してから、悪意のあるユーザーのIPアドレスに対して3番目のコマンドを実行します。
ユーザープロパティで、ログオン時間をすべての時間のログオン拒否に変更するだけです。これにより、ログインしている場所からすぐにログアウトされます。