修改計算機名腳本

通常更改計算機的方法是:右擊「個人電腦屬性」—「計算機名選項」—「更改」,輸入新的計算機名,在計算機規模不是很大的狀況下,咱們能夠這樣更改,若是計算機數量超過必定規模例如500臺,或許咱們應該思考是否有更爲便捷的方法作到,以這裏的環境爲例,公司客戶端計算機有2000多臺,分紅兩類,一類爲辦公網:能夠訪問外網;一類爲業務網只能訪問內部網絡。已經部署了域,在一次整改會上提到現有的計算機名不夠規範,存在在遇到問題時不能準肯定位計算機的位置,要求行政人員制定統一的座位標籤,與之對應IT人員部署統一計算機名,計算機名和IP綁定,經過計算機名能迅速判斷計算機在哪一個部門,幾樓,遇到風險案件也能迅速調用那裏的攝像頭查看,固然我這裏的重點是談到更改計算機名的方法:服務器

1.先在AD域控服務器上創建一個備用管理員帳號網絡

2.將修改計算機名腳本放入共享文件夾內並設爲共享,而後製做共享映射腳本,經過域策略制定用戶登錄腳本便可。ide

共享映射腳本請看另外一博文http://wuxiaohui.blog.51cto.com/697989/514796ui

3.在客戶端用備用域管理員登錄到域,直接訪問映射盤運行修改計算機名腳本,輸入新的計算機名便可(可能會有人問這仍是須要手動一臺臺區改,的確如此,我想這個是沒法考程序完成。另外加入全部計算機爲工做組模式,須要部署域的狀況下也是須要所有修改計算機名的,但在工做模式下如何能充分利用這一便利性也是一個思考的方向)如圖:this

 

 

腳本以下:調試

'本腳本須要管理員(本機管理員或域管理員都可)權限方可正常執行。
'本腳本需開啓WSH/WMI組件,通常計算機默認開啓。
'本腳本在第一次修改計算機名成功後,再次執行無效;必須重啓計算機後方可再次執行生效。blog

'定義變量
Dim Hostnameip

'打開關閉錯誤調試
On Error Resume Nextci

'Get Computer/User Name, init objects
Set objWSH = CreateObject("WScript.Shell")
Set objWshNetwork = CreateObject("WScript.Network")
strComputerName = objWshNetwork.ComputerName
strUserName = objWshNetwork.UserName
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputerName & "\root\cimv2")部署

'彈出對話框,輸入須要修改的計算機名
Hostname = Inputbox ("當前計算機名爲:" & strComputerName & vbCr & vbCr _
         & "請輸入正確的計算機名" & vbCr & vbCr _
         & "請勿包含 ` ~ ! @ # $ * ? 等非法字符","修改計算機名")
'轉換爲大寫字母
Hostname = UCase(Hostname)
If Hostname = "" Then
   MsgBox "請輸入正確的計算機名"
Elseif   Hostname = strComputerName Then
   MsgBox "輸入的值與原計算機名相同,請從新輸入正確的值"
Else
 '修改計算機名
 Set colComputers = objWMIService.ExecQuery _
  ("Select *from Win32_ComputerSystem")
 For Each objComputer in colComputers
   ObjComputer.Rename(Hostname)
 Next

 strHostNameKey = "HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName\ComputerName"
 strHostName = objWSH.Regread(strHostNameKey)

 '判斷註冊表鍵值中已修改的計算機名與原計算機名是否相同,相同則表示未修改爲功  If  strHostName = strComputerName Then    MsgBox ("原計算機名:" & strComputerName & ",等同於現計算機名:" & strHostName & vbCr _       & vbCr &"# 計算機名未修改爲功,請檢查:" & vbCr _       & "   1) 當前用戶是否有管理員權限。" & vbCr _       & "   2) 輸入的計算機名是否正確合法。" & vbCr _       & "   3) WMI服務是否正常。" & vbCr _       & vbCr & "# WMI服務異常可嘗試以下方法處理:" & vbCr _       & "   a) 關閉並中止 Windows Management Instrumentation 服務。" & vbCr _       & "   b) 而後刪除 %SystemRoot%\System32\Wbem\Repository 文件夾中的全部文件。" & vbCr _       & "   c) 從新啓動 Windows Management Instrumentation 服務。" & vbCr _       & vbCr & "# 或者重啓計算機後再次執行該腳本")  Else   '不然表示已經修改爲功,提示重啓計算機   reboot = MsgBox("原計算機名:" & strComputerName & ",已修改成:" & strHostName & _      vbCr & vbCr &"* 請確認是否修改爲功,點擊「是」當即重啓計算機;"& vbCr _      &"* 或者點擊「否」,稍後重啓",vbYesNo)   If reboot = vbYes Then    Set OpSysSet = _     GetObject("winmgmts:{(Shutdown)}").ExecQuery("select * from Win32_OperatingSystem where Primary=true")       For Each OpSys In OpSysSet        OpSys.Reboot()      Next   Else     MsgBox "若是計算機名更改爲功,請您儘快重啓計算機,以使修改生效。"   End If  End If End If  

相關文章
相關標籤/搜索