Win32_OperatingSystem クラスの Reboot メソッド
RebootWMI クラス メソッドは、コンピューター システムをシャットダウンし、再起動します。
このトピックでは、マネージド オブジェクト形式 (MOF) 構文を使用します。 このメソッドの使用方法の詳細については、「メソッドの 呼び出し」を参照してください。
構文
uint32 Reboot();
パラメーター
このメソッドにはパラメーターはありません。
戻り値
成功を示す 0 を返します。 それ以外の数値はエラーを示します。 エラー コードについては、「 WMI エラー定数 」または 「WbemErrorEnum」を参照してください。 一般的な HRESULT 値については、「 システム エラー コード」を参照してください。
-
成功 (0)
-
その他 (1 4294967295)
注釈
コンピューターをプログラムで再起動する機能により、管理者は多くのコンピューター管理タスクをリモートで実行できます。
たとえば、ソフトウェアをインストールするスクリプトを作成したり、コンピューターの再起動を必要とする構成を変更したりする場合は、スクリプトに restart コマンドを含め、操作全体をリモートで実行できます。 Reboot メソッドを使用して、コンピューターを再起動できます。 Win32Shutdown メソッドと同様に、Reboot メソッドでは、スクリプトでセキュリティ資格情報が使用されているユーザーが Shutdown 特権を持っている必要があります。
例
次の VBScript コード サンプルでは、 Win32_OperatingSystem クラスの Reboot メソッドを呼び出します。
注意
Shutdown メソッドを正常に呼び出すには、Shutdown 特権が必要です。
Set OpSysSet = GetObject("winmgmts:{(Shutdown)}//./root/cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true")
for each OpSys in OpSysSet
OpSys.Reboot()
next
次の Perl コードは、 Win32_OperatingSystem クラスの Reboot メソッドを呼び出します。
注意
Shutdown メソッドを正常に呼び出すには、Shutdown 特権が必要です。
use Win32::OLE;
use strict;
my $OpSysSet;
eval { $OpSysSet = Win32::OLE->GetObject("winmgmts:{(Shutdown)}//./root/cimv2")->
ExecQuery("SELECT * FROM Win32_OperatingSystem WHERE Primary=true"); };
if (!$@ && defined $OpSysSet)
{
close(STDERR);
foreach my $OpSys (in $OpSysSet)
{
my $RetVal = $OpSys->Reboot();
if (!defined $RetVal || $RetVal != 0)
{
print Win32::OLE->LastError, "\n";
}
}
}
else
{
print STDERR Win32::OLE->LastError, "\n";
}
次の VBScript は、リモート システム上の Win32_OperatingSystem クラスの Reboot メソッドを呼び出します。 再起動するリモート システムの名前をREMOTE_SYSTEM_NAMEに入力します。
注意
Reboot メソッドを正常に呼び出すには、RemoteShutdown 特権が必要です
Set OpSysSet = GetObject("winmgmts:{(RemoteShutdown)}//REMOTE_SYSTEM_NAME/root/cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true")
for each OpSys in OpSysSet
OpSys.Reboot()
next
Perl に従って、リモート システム上の Win32_OperatingSystem クラスの Reboot メソッドを呼び出します。 再起動するリモート システムの名前をREMOTE_SYSTEM_NAMEに入力します。
注意
Reboot メソッドを正常に呼び出すには、RemoteShutdown 特権が必要です。
use strict;
use Win32::OLE;
use constant REMOTE_SYSTEM_NAME => "MACHINENAME";
use constant USERNAME => "USER";
use constant PASSWORD => "PASSWORD";
use constant NAMESPACE => "root\\cimv2";
use constant wbemPrivilegeRemoteShutdown => 23;
use constant wbemImpersonationLevelImpersonate => 3;
close(STDERR);
my ($locator, $services, $OpSysSet);
eval {
$locator = Win32::OLE->new('WbemScripting.SWbemLocator');
$locator->{Security_}->{impersonationlevel} = wbemImpersonationLevelImpersonate;
$services = $locator->ConnectServer(REMOTE_SYSTEM_NAME, NAMESPACE, USERNAME, PASSWORD);
$services->{Security_}->{Privileges}->Add(wbemPrivilegeRemoteShutdown);
$OpSysSet = $services->ExecQuery("SELECT * FROM Win32_OperatingSystem WHERE Primary=true");
};
if (!$@ && defined $OpSysSet)
{
foreach my $OpSys (in $OpSysSet)
{
$OpSys->Reboot();
}
}
else
{
print Win32::OLE->LastError, "\n";
exit(1);
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows Vista |
サポートされている最小のサーバー |
Windows Server 2008 |
名前空間 |
Root\CIMV2 |
MOF |
|
[DLL] |
|