2016-04-19 6 views
1

Windows(Windows 10および2012)で自動化テストを実行していますが、自動化の要件の1つはALLユーザーがログに記録される必要があります。オフ。私は展開後にこれを行う機会があります。任意の提案を、私は一種のthis pageは答えを与える見たが、私はquery sessionを試した後、私はそれもservicesrdp-tcpセッションを与える見...しかし、私はすべてのサービスを停止する必要はありません...Windows上のすべてのユーザーをドメイン管理者としてコマンドラインからログオフする方法

答えて

1

あなたがリンクしたページが正しい答えを持っています。 Windows 2012/10では、1の代わりにskip=2を使用する必要があります。この方法で、 'サービス'行をスキップします。
は、だからあなたのバッチファイルは次のようになります。

query session >session.txt 
for /f "skip=2 tokens=3," %%i in (session.txt) DO logoff %%i 
del session.txt 
0

このソリューション前の回答に基づいていますが、この1は、すべてのセッション(でも、切断されたセッションを)閉じます。残念ながら、 'query session'コマンドによって返された各行のテキスト形式は、解析が難しい場合があります。次のスクリーンショットで見られるように、ユーザー名は空であり、この例では、tokens = 3を使用すると、ユーザーcompilのIDではなくユーザー名が取得されます。

enter image description here

問題は、あなたが彼の名を持つ切断されたユーザログオフを傾けることです。この問題を回避するために、2つのforループを使用してセッション名とID(行形式に依存)を取得し、数値だけをlogoffコマンドを送信し、切断したセッションもログオフするようにします。

@echo off 

for /f "skip=2 tokens=2,3 delims= " %%a in ('query session') DO (
    echo %%a|findstr /xr "[1-9][0-9]* 0" >nul && (
     logoff %%a 
    ) 

    echo %%b|findstr /xr "[1-9][0-9]* 0" >nul && (
     logoff %%b 
    ) 
) 
関連する問題