web-dev-qa-db-ja.com

指定された時間に誰もログインしていないときにクライアントをシャットダウンします

私たちの会社では、人々は午後7時に仕事をやめます。午後8時に、GPOでスケジュールされたタスクを実行して、ログインしたユーザーにコンピューターがシャットダウンすることを警告します。これは正常に機能します。

誰もログインしておらず、コンピューターがまだ実行されている場合は、コンピューターをシャットダウンします。誰かがこれを行う方法を知っていますか?

私たちはWindows Server 2012を実行しており、クライアントはWindows 7です。

2
glendc

コンピュータのシャットダウンはかなり簡単です。他の人が指摘しているように、これにはshutdownコマンドを使用できます。マシンのローカルファイアウォールをSMBおよび管理ホストからのRPCを許可するように構成している場合(たとえば、グループポリシーでリモート管理の例外を有効にすることにより)、ドメイン内のすべてのマシンに対して集中的にシャットダウンをトリガーできます。シャットダウン呼び出しに/m \\computernameパラメーターを使用する:

shutdown /s /f /t 30 /m \\pcXXX /c "Automatic shutdown"

シャットダウンコマンドのより柔軟なバージョンは SysInternalsによってpsshutdownとして提供されます です。特に、ユーザーとの対話が可能になります(つまり、ユーザーは必要に応じてシャットダウン要求を中止する機会が与えられます)

ここで、ユーザーがマシンにログオンしているかどうかを判断するには、それぞれをテストする必要があります。 quserコマンドを使用します。典型的な出力は次のようになります。

C:\Users\denis>quser
 USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
>denis                 console             1  Active      none   22.04.2014 15:11

「アクティブ」などの文字列をフィルタリングして、安全にシャットダウンできるかどうかを判断できます。バッチバージョンは次のようになります。

shutdownunused.bat

ping %1
if errorlevel 1 ( echo %1 seems offline && exit 1)
quser /SERVER:%1 | find "Active"
if %errorlevel% == 1 shutdown /s /f /t 30 /M \\%1 /c "Automatic shutdown"

shutdownunused.bat pc1234を呼び出すと、pc1234がa)ping可能であり、b)アクティブにログオンしているユーザーがいない場合(ユーザーがログオンしているが切断されているか、マシンがロックされている場合)、pc1234がテストされてシャットダウンされます。これは、ローカルのみのバージョンをスケジュールされたタスクとして使用するか、ドメイン内のすべてのステーションの列挙を通じて管理ホストから一元的にトリガーすることにより、好みに合わせてスクリプト化できます。後者のアプローチの利点は、ログの保持と統計の作成が簡単になることです。

1
the-wabbit

バッチファイルで次のコマンドを使用します。このコマンドは、展開ソリューションによってスケジュールされたタスクとして選択された各マシンに発行されます。

for /f %%i IN ('quser ^| find /c /i "active"') DO (if %%i EQU 0 shutdown /s)
0
Castell Coch

Stop-ComputerCMDLetを使用することもできます。デフォルトでは、ユーザーがまだログオンしている場合、コンピューターはシャットダウンされません。その場合は、-Forceを使用する必要があります。

Nixphoeはあなたが探しているコマンドを持っています。ただし、いくつかの提案:まず、スケジュールされたタスクを作成するときに、[条件]タブ([新しいタスクの作成])で、コンピューターがxxx分間アイドル状態になるまでトリガーされないように設定してください。これにより、通話を防ぐことができます。遅くまで滞在しているユーザーが、作業中にコンピューターを「自分でオフにする」ことから。

また、そのような「ワンライナー」にはバッチファイルの使用は必要ありませんが、「プログラム/スクリプト」の下に「シャットダウン」と入力するだけで、新しいタスクを作成するために「アクション」タブに移動できます。引数 "/ s/f/t 30"(または任意の数)の下で、行全体を実行します

Shutdown /s /f /t 30

シャットダウンを強制する前にエンドユーザーに少し警告を与えるので、/ t 0ではなく/ t 30をお勧めします。どうなるか教えてください!

Windows Update、AVスキャン、および起動時間について言及されたこと以外に。同じ スケジュールされたタスクのGPO を使用して、コンピューターでバッチファイルをshutdown /f /t 0

グループポリシーの場所:Computer Configuration, expand the Preferences folder, and then expand the Control Panel Settings, Right-click the Scheduled Tasks node, point to New

0
Nixphoe