Добрый день уважаемые знатоки! Нужна помощь в решении такой тривиальной задачи:
Дано:
1) 110 учетных записей пользователей в AD (на сервере win2008R2)
2) Есть текстовый файл в котором построчно записаны все 110 пользователей в виде:
"CN=Петрова,OU=Users,OU=ORG.LOC,DC=org,DC=loc"
"CN=Сидорова,OU=Users,OU=ORG.LOC,DC=org,DC=loc"
"CN=Иванова,OU=Users,OU=ORG.LOC,DC=org,DC=loc"
"CN=Козлова,OU=Users,OU=ORG.LOC,DC=org,DC=loc"
и т.д. ровно 110 шт.
3) Текстовый файл, в котором прописаны построчно пароль из 9 символов:
gfhys32jf7
ahjds6382
dfk83j333
и т.д. ровно 110 шт.
Требуется:
Написать скрипт в powershell или просто батник, что бы он менял пароли пользователей (брал их из файла с паролями) и полученный результат выводил в некий третий файл в виде двух столбцов (1 столбез - учетка; 2 столбец -пароли)
Как менять пароли с помощью powershell (или cmd) я понимаю. Не получается считывать из файла данные и с помощью цикла их использовать в скрипте.
А зачем в файл-то записывать каждый раз ? В цикле ?!
Можно собрать все в $result и после цикла записать один раз: $result += ($file1[$i] +' | '+ $file2[$i])
И $count зачем ? В цикле и в выводе в консоль можно же использовать $file1.Length
get-help get-content -examples $users = get-content file1.txt считывает построчно ваш файл в переменную $users
каждую строку из файла можно адресовать по индексу в цикле for get-help about_for -examples for ($counter = 0; $counter -le $users.length;$counter +=1;) {write-host $users[$counter] }
Так как у вас файлы c одинаковым количеством строк то $passwords[$counter] даст соответствующий пароль внутри цикла, если считать файл паролей в переменную $passwords
Через FOR можно:
FOR /F "delims=; " %%i in (file.txt) do (
@echo %%i %%j
)
чтобы упростить, создайте файл со следующим содержанием:
CN=Петрова,OU=Users,OU=ORG.LOC,DC=org,DC=loc;gfhys32jf7
CN=Козлова,OU=Users,OU=ORG.LOC,DC=org,DC=loc;dfk83j333
Николай Иванченко: как вариант
dsmod user "CN=Козлова,OU=Users,OU=ORG.LOC,DC=org,DC=loc" -pwd dfk83j333
как-то так
FOR /F "delims=; " %%i in (file.txt) do (
dsmod user "%%i" -pwd %%j
)
Не знаю как это будет на powershell, а в VBS это может решаться например так: (strNoDeployFilename - строка, имя файла). Файл считали одним вызовом, распарсили вторым - там же не миллион строк - и работаем с массивом
' Create filesystem object
Set objFSO = CreateObject("Scripting.FileSystemObject")
' Open nodepolyed boxes list file
If objFSO.FileExists(strNoDeployFilename) Then
Set objTextFile = objFSO.OpenTextFile(strNoDeployFilename, ForReading)
Else
WScript.Echo("Nodeployed boxes list file " & strNoDeployFilename & " does not exist")
WScript.Quit
End If
strNoDeployLine = objTextFile.ReadAll
objTextFile.Close
arrayNodeploy = Split(strNoDeployLine, vbNewLine, vbSplitAll, vbTextCompare)