次の方法で共有


Win32_OperatingSystem クラスの Win32Shutdown メソッド

Win32ShutdownWMI クラス メソッドは、Win32 オペレーティング システムでサポートされているシャットダウン オプションの完全なセットを提供します。 これには、ログオフ、シャットダウン、再起動、ログオフ、シャットダウン、または再起動の強制が含まれます。

このトピックでは、マネージド オブジェクト形式 (MOF) 構文を使用します。 このメソッドの使用方法の詳細については、「メソッドの 呼び出し」を参照してください。

構文

uint32 Win32Shutdown(
  [in] sint32 Flags,
  [in] sint32 Reserved = 
);

パラメーター

Flags [in]

コンピューターをシャットダウンするためのフラグのビットマップ セット。 コマンドを強制するには、Force フラグ (4) をコマンド値に追加します。 リモート コンピューターで [シャットダウン] または [再起動] と組み合わせて Force を使用すると、すべての機能 (WMI、COM など) が直ちにシャットダウンされるか、リモート コンピューターが再起動されます。 これにより、不確定な戻り値が返されます。

0 (0x0)

ログオフ - ユーザーをコンピューターからログに記録します。 ログオフすると、終了関数を呼び出したプロセスのセキュリティ コンテキストに関連付けられているすべてのプロセスが停止し、現在のユーザーがシステムからログに記録され、ログオン ダイアログ ボックスが表示されます。

4 (0x4)

強制ログオフ (0 + 4) - ユーザーを直ちにコンピューターからログオフし、ログオン セッションが終了したことをアプリケーションに通知しません。 これにより、データが失われる可能性があります。

1 (0x1)

シャットダウン - 電源をオフにしても安全な場所までコンピューターをシャットダウンします。 (すべてのファイル バッファーがディスクにフラッシュされ、実行中のすべてのプロセスが停止されます)。ユーザーにメッセージが表示されます。 It is now safe to turn off your computer.

シャットダウン中に、システムは実行中の各アプリケーションにメッセージを送信します。 アプリケーションは、メッセージの処理中にクリーンアップを実行し、終了できることを示す True を返します。

5 (0x5)

強制シャットダウン (1 + 4) - 電源をオフにしても安全な場所までコンピューターをシャットダウンします。 (すべてのファイル バッファーがディスクにフラッシュされ、実行中のすべてのプロセスが停止されます)。ユーザーにメッセージが表示されます。 It is now safe to turn off your computer.

強制シャットダウン アプローチを使用すると、WMI を含むすべてのサービスが直ちにシャットダウンされます。 このため、リモート コンピューターに対してスクリプトを実行している場合は、戻り値を受け取ることができません。

2 (0x2)

再起動 - コンピューターをシャットダウンしてから再起動します。

6 (0x6)

強制再起動 (2 + 4) - コンピューターをシャットダウンして再起動します。

強制再起動アプローチを使用すると、WMI を含むすべてのサービスが直ちにシャットダウンされます。 このため、リモート コンピューターに対してスクリプトを実行している場合は、戻り値を受け取ることができません。

8 (0x8)

電源オフ - コンピューターをシャットダウンし、電源をオフにします (該当するコンピューターでサポートされている場合)。

12 (0xC)

強制電源オフ (8 + 4) - コンピューターをシャットダウンし、電源をオフにします (該当するコンピューターでサポートされている場合)。

強制電源オフアプローチを使用すると、WMI を含むすべてのサービスが直ちにシャットダウンされます。 このため、リモート コンピューターに対してスクリプトを実行している場合は、戻り値を受け取ることができません。

予約済み [in]

、Win32Shutdown を拡張することを意味します。 現在、 予約済み パラメーターは無視されます。

戻り値

成功を示す 0 を返します。 それ以外の数値はエラーを示します。 エラー コードについては、「 WMI エラー定数」 または 「WbemErrorEnum」を参照してください。 一般的な HRESULT 値については、「 システム エラー コード」を参照してください。

成功 (0)

その他 (1 ~ 4294967295)

注釈

organization内のコンピューターをより効率的に管理するには、管理者はコンピューターをリモートでシャットダウンまたは再起動したり、ユーザーをリモートでログオフしたりする機能が必要です。 これらのタスクを実行することで、管理者は、各コンピューターを手動でシャットダウンまたは再起動することなく、ソフトウェアのインストール、コンピューター設定の再構成、ネットワークからのコンピューターの削除、その他のタスクの実行を行うことができます。

たとえば、ネットワーク アップグレードを実行するには、特定のネットワーク セグメントで実行されているすべてのコンピューターをシャットダウンする必要がある場合があります。 グループ ポリシーアップグレードを強制するには、ユーザーをコンピューターからログオフする必要があります。 コンピューターウイルスがorganizationのどこかに存在する場合は、ウイルスが拡散する機会を得る前に、できるだけ多くのコンピュータをシャットダウンすることができます。 コンピューターをシャットダウンして再起動したり、手動ではなくプログラムでユーザーをログオフしたりできる機能は、時間を大幅に節約できます。

呼び出し元プロセスには 、SE_SHUTDOWN_NAME 特権が必要です。

Win32ShutdownTracker メソッドは、Win32_OperatingSystemWin32Shutdown メソッドでサポートされているのと同じシャットダウン オプションのセットを提供しますが、コメント、シャットダウンの理由、またはタイムアウトを指定することもできます。

Win32Shutdown メソッドには、ワークステーションをロックするためのパラメーターがないため、ユーザーはログオンしたままにします。 ただし、次のコマンドを使用して、コマンド ラインからワークステーションをロックできます。

% windir %\System32\rundll32.exe user32.dll,LockWorkStation

TechNet ギャラリーの Log Out、Reboot、または Shut Down Multiple Computers VBScript サンプルでは、Win32Shutdown を使用して、サーバー配列に一覧表示されているコンピューターをログオフ、シャットダウン、再起動、または電源オフします (選択内容に応じて)。

TechNet ギャラリー のComputerManagement.ps1 PowerShell サンプルには、リモート コンピューターで Win32Shutdown を呼び出すメソッドが含まれています。

次の PowerShell の例では、Win32Shutdown メソッドを使用して、指定したコンピューターをシャットダウンします。

$computername= "."
$win32OS = get-wmiobject win32_operatingsystem -computername $computername
$win32OS.psbase.Scope.Options.EnablePrivileges = $true
$win32OS.win32shutdown(8)

次の PowerShell コード サンプルでは、get-wmiobject コマンドレットの EnableAllPrivileges を使用して、適切な特権を実現します。

$win32OS = get-wmiobject win32_operatingsystem -computername $computername -EnableAllPrivileges
$win32OS.win32shutdown(8)

次の VB.NET サンプル コードでは、Shutdown メソッドを使用してシステムを再起動またはログオフします。

Dim

testResult AsSingle

Dim WMIServiceObject, ComputerObject AsObject 

'Now get some privileges 

WMIServiceObject = GetObject(
"Winmgmts:{impersonationLevel=impersonate,(Debug,Shutdown)}")
ForEach ComputerObject In WMIServiceObject.InstancesOf("Win32_OperatingSystem") 
    testResult = ComputerObject.Win32Shutdown(2 + 4, 0) 
    'reboot
    'testResult = ComputerObject.Win32Shutdown(0, 0) 'logoff 
    ' testResult = ComputerObject.Win32Shutdown(8 + 4, 0) 'shutdown 

If testResult <> 0 Then 

MsgBox("Sorry, an error has occurred while trying to perform selected operation") 

Else 

'Operation selected in statement above if condition would be carried out 

EndIf 

Next

要件

要件
サポートされている最小のクライアント
Windows Vista
サポートされている最小のサーバー
Windows Server 2008
名前空間
Root\CIMV2
MOF
CIMWin32.mof
[DLL]
CIMWin32.dll

こちらもご覧ください

オペレーティング システム クラス

Win32_OperatingSystem

Win32ShutdownTracker

WMI タスク: デスクトップ管理

VBScript を使用した特権操作の実行