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_OperatingSystemの Win32Shutdown メソッドでサポートされているのと同じシャットダウン オプションのセットを提供しますが、コメント、シャットダウンの理由、またはタイムアウトを指定することもできます。
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 |
|
[DLL] |
|
こちらもご覧ください