近期换了一家公司,负责IT所有的服务器、网络、资产管理。为了便于桌面用户的资产管理,我决定使用计算机的主机编号来命名,然后从域中就可以很清晰的看到每一个资产的状态。我的命名规则是SZ-主机编号。

脚本代码如下:

 
  
  1. 'get current pcname  
  2. strComputer = "." 
  3. Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")    
  4. Set colComputers = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")    
  5. For Each objComputer in colComputers  
  6.  strPCname = UCase(objComputer.Name)  
  7. Next  
  8.  
  9. 'get sn number  
  10. Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")  
  11. Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS")  
  12. For Each objItem in colItems  
  13. strsn = objItem.SerialNumber  
  14. Next  
  15.  
  16. StrRname = "CNSZ-" & strsn  
  17.  
  18. If strPCname = StrRname then  
  19. wscript.quit  
  20. End if  
  21.  
  22. Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  
  23. Set colComputers = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")  
  24. For Each objComputer in colComputers  
  25.  err = objComputer.Rename(StrRname)  
  26.  Wscript.Echo "The new PC name is " & StrRname & "." & VbCrLf & "Need reboot to take effect!"  
  27. Next  
  28.  
  29. 'Reboot or not  
  30. strReboot = MsgBox("Do you want to reboot computer?", vbYesNo, "Warning!")  
  31.  If strReboot = vbNo Then  
  32.  Wscript.Quit  
  33.  End If  
  34.  
  35. '==Reboot Computer==  
  36. strComputer = "." 
  37. Set objWMIService = GetObject("winmgmts:" _  
  38.     & "{impersonationLevel=impersonate,(Shutdown)}!\\" & strComputer & "\root\cimv2")  
  39. Set colOperatingSystems = objWMIService.ExecQuery _  
  40.     ("Select * from Win32_OperatingSystem")  
  41. For Each objOperatingSystem in colOperatingSystems  
  42.     ObjOperatingSystem.Reboot()  
  43. Next 

PS:附件提供源码