Что нового

Переименование компьютеров в сети по маске

ZeVSalt

Я не лупоглазый, это прищур такой !
Сообщения
136
Репутация
0
Здравствуйте господа.
Подскажите пути решения вопроса.
Необходимо переименовать компьютеры и имена пользователей в локальной сети, согласно текстового файла расположенного на сервере.
Файл предполагаю вида:
[box title=Содержимое файла Rename_User.txt]192.168.0.150 User1 Comp1
192.168.0.155 User2 Comp2[/box]

Код:
; Запускаем скрипт с админскими правами
#requireadmin

#include <GUIConstants.au3>
#include <file.au3>

;~ Открытие файла
$oFile = FileOpen ( @ScriptDir & "\" & "Rename_User.txt" , 0)

;~ проверка IP
$IPAddress = @IPAddress1

;~ Считывание переменных из файла
$read_IPAdress = (Здесь переменная считаная из файла)
$read_UserName = (Здесь переменная считаная из файла)
$read_CompName = (Здесь переменная считаная из файла)

;~ Переименование 
If $IPAddress = $read_IPAdress Then

$RenameUser = _RunDos ("wmic UserAccount where Name=" & '"%USERNAME%"' & " call Rename Name=" & '"' & $read_UserName & '"')
$RenameComp = _RunDos ("wmic computersystem where name=" & '"%computername%"' & " rename " & '"' & $read_CompName & '"')

Else
	Exit
EndIf

FileClose($oFile)


Примерно накидал, но как считать из файла заморачиваюсь :-[

Строк в файле около 500
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
ZeVSalt
как считать из файла
Код:
; Запускаем скрипт с админскими правами
#requireadmin

#include <File.au3>

;~ Чтение файла в двумерный массив
Global $aData
_FileReadToArray(@ScriptDir & "\" & "Rename_User.txt", $aData, 0, " ")

;~ проверка IP
$IPAddress = @IPAddress1

;~ Переименование
For $i = 0 To UBound($aData) - 1
  If $aData[$i][0] = $IPAddress Then
    ; _RunDos ("wmic UserAccount where Name=" & '"%USERNAME%"' & " call Rename Name=" & '"' & $aData[$i][1] & '"')
    ConsoleWrite("wmic UserAccount where Name=" & '"%USERNAME%"' & " call Rename Name=" & '"' & $aData[$i][1] & '"' & @CRLF)
    ; _RunDos ("wmic computersystem where name=" & '"%computername%"' & " rename " & '"' & $aData[$i][2] & '"')
    ConsoleWrite("wmic computersystem where name=" & '"%computername%"' & " rename " & '"' & $aData[$i][2] & '"' & @CRLF)
    ExitLoop
  EndIf
Next

;~ контроль
If $i = UBound($aData) Then ConsoleWrite("Не найден IP-адрес: " & $IPAddress & @CRLF)
Данный пример сделан под ваш файл, т.е. в функции _FileReadToArray() используется разделитель - пробел. Но пробел не надёжный разделитель. В вашем случае лучше использовать ";" или "|". А чтобы не запутаться в кавычках, их можно сразу в файле указать. В результате файл будет таким
Код:
192.168.0.154|"User1"|"Comp1"
192.168.0.155|"User2"|"Comp2"
а код таким
Код:
...
_FileReadToArray(@ScriptDir & "\" & "Rename_User.txt", $aData, 0, "|")
...
  If $aData[$i][0] = $IPAddress Then
    ; _RunDos ("wmic UserAccount where Name=" & '"%USERNAME%"' & " call Rename Name=" & $aData[$i][1])
    ConsoleWrite("wmic UserAccount where Name=" & '"%USERNAME%"' & " call Rename Name=" & $aData[$i][1] & @CRLF)
    ; _RunDos ("wmic computersystem where name=" & '"%computername%"' & " rename " & $aData[$i][2])
    ConsoleWrite("wmic computersystem where name=" & '"%computername%"' & " rename " & $aData[$i][2] & @CRLF)
    ExitLoop
  EndIf
...
 
Автор
ZeVSalt

ZeVSalt

Я не лупоглазый, это прищур такой !
Сообщения
136
Репутация
0
Еще надо добавить
Код:
#include <Process.au3>
 
Верх