1. Skip to Menu
  2. Skip to Content
  3. Skip to Footer

Изменить WINS на серверах в домене

 

Может возникнуть необходимость массовой смены списка WINS-серверов на серверах вашего домена. Воспользуйтесь приведенным ниже VBS скриптом, который выбирает все сервера (кроме контроллеров домена) из заданной OU-шки и меняет в настройках их сетевых подключений список WINS-серверов. Перед использованием скрипта не забудте поменять все значения, помеченные красным цветом, на свои.

------------------------------------------------------------- начало скрипта --------------------------------------------------------------

Const ADS_SCOPE_SUBTREE = 3
Dim c, r1, r2, i
 
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TF = FSO.CreateTextFile("C:\WINS_change_log.txt", True)
 
EnumComputers
SUB EnumComputers
Dim UserPCs(10000,1)
   on error resume next
   strDomain = "domain.ru"
   Set objConnection = CreateObject("ADODB.Connection")
   Set objCommand = CreateObject("ADODB.Command")
   objConnection.Provider = "ADsDSOObject"
   objConnection.Open "Active Directory Provider"
  
   Set objCOmmand.ActiveConnection = objConnection
   objCommand.CommandText = "SELECT Name, Location, whenChanged, operatingSystem, primaryGroupID, distinguishedName FROM 'LDAP://OU=Test,OU=Servers,DC=domain,DC=ru' WHERE operatingSystem='Windows*Server*' and primaryGroupID<>'516'"
   objCommand.Properties("Page Size") = 1000
   objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
   Set objRecordSet = objCommand.Execute
   objRecordSet.MoveFirst
   i=1
   Do Until objRecordSet.EOF
      
       strComputer = objRecordSet.Fields("Name").Value
       UserPCs(i,0)=strComputer
       UserPCs(i,1)=objRecordSet.Fields("operatingSystem").Value
      
       serverName = objRecordSet.Fields("Name").Value
       QueryWINS serverName
      
       TF.Write (UserPCs(i,0))
       TF.Write " | "
       TF.Write "первичный WINS-сервер: "& r1 & " "
       TF.Write " | "
       TF.Write "вторичный WINS-сервер: "& r2 & " "
       TF.Write " | "                              
       TF.Write "результат: " & c & " "
       TF.Write " | "
       TF.Write (UserPCs(i,1))
       TF.Write vbCrLf
       i=i+1
       objRecordSet.MoveNext
  
   Loop
END SUB
 
SUB QueryWINS (strServerName)
   on error resume next
 
   Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strServerName & "\root\cimv2")
   Set colNICConfigs = objWMIService.ExecQuery("SELECT WINSPrimaryServer, WINSSecondaryServer, Description FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True AND DHCPEnabled = false")
   for each objNICConfig in colNICConfigs
       OldWINS1Configuration = objNICConfig.WINSPrimaryServer
       OldWINS2Configuration = objNICConfig.WINSsecondaryServer                
       if LEN(OldWINS1Configuration)>1 THEN
 
           r1 = OldWINS1Configuration
           r2 = OldWINS2Configuration
           objNICConfig.SetWINSServer "192.168.1.2","192.168.1.3"
 
             select Case Err.Number
             case 0
               c = 0
             case Else
               c = 1
             end select
       end if
   next
 
END SUB

-------------------------------------------------------------- конец скрипта --------------------------------------------------------------

 

Добавить комментарий