Win32_OperatingSystem 類別的 Reboot 方法

RebootWMI 類別方法會關閉電腦系統,然後重新開機它。

本主題使用 Managed 物件格式 (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。

注意

您必須具有 RemoteShutdown 許可權,才能成功叫用 Reboot 方法

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。

注意

您必須具有 RemoteShutdown 許可權,才能成功叫用 Reboot 方法。

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
CIMWin32.mof
DLL
CIMWin32.dll

另請參閱

作業系統類別

Win32_OperatingSystem

CIM_OperatingSystem.Shutdown 方法

WMI 工作:桌面管理