Быстро и удобно это можно сделать, используя список в Excel и скрипт, который автоматически сменит пароли.
Предварительные требования
- PowerShell должен быть установлен на вашей системе.
- Модуль ImportExcel должен быть установлен для работы с Excel-файлами. Команда для установки: Install-Module -Name ImportExcel.
- Excel-файл должен содержать два столбца: “Пользователи” и “Новый пароль”.
Пример структуры файла Excel
Пользователи | Новый пароль |
---|---|
user1 | password123 |
user2 | newpass456 |
Шаги выполнения
- Укажите путь к Excel-файлу: $excelFilePath = “0-users.xlsx”.
- Загрузите данные из Excel с помощью команды Import-Excel, которая импортирует содержимое файла в переменную $usersData..
- Обработка данных: Скрипт проходит по каждому пользователю в таблице, проверяет наличие имени пользователя и нового пароля. Если данные корректные, выполняется команда для смены пароля: Set-LocalUser -Name $username -Password $securePassword В случае ошибки или пустых данных, скрипт записывает соответствующее сообщение в результат.
- После обработки всех записей, скрипт сохраняет результаты выполнения (успех или ошибка) обратно в Excel в новый лист под названием UpdatedUsers:. $results | Export-Excel -Path $excelFilePath -WorksheetName “UpdatedUsers”
Пример работы скрипта
- Скрипт изменяет пароль для пользователя user1 на password123. Если операция прошла успешно, статус будет «Success». Если произошла ошибка, например, если пользователь не найден, статус будет «Failed», с подробным описанием ошибки.
- Если имя пользователя или пароль пустые, скрипт пропустит эту запись и запишет статус как «Failed: Username or password is empty or null».
Запуск скрипта
- Скопируйте скрипт в файл PowerShell, например ChangePassword.ps1.
- Откройте PowerShell с правами администратора и запустите скрипт: .\ChangePassword.ps1.
- Результат: После завершения работы скрипта, обновленные данные будут записаны в тот же файл Excel на новый лист под названием UpdatedUsers с указанием статусов для каждой записи.
Пример скрипта
# Путь к файлу Excel $excelFilePath = "0-users.xlsx" # Загрузка данных из Excel $usersData = Import-Excel -Path $excelFilePath # Создаем список для результатов $results = @() # Проход по всем пользователям foreach ($row in $usersData) { $username = $row.Пользователи # Имя пользователя в колонке "Пользователи" $newPassword = $row.'Новый пароль' # Новый пароль во второй колонке if (-not [string]::IsNullOrWhiteSpace($username) -and -not [string]::IsNullOrWhiteSpace($newPassword)) { $status = "Success" try { # Смена пароля для локального пользователя $securePassword = ConvertTo-SecureString $newPassword -AsPlainText -Force Set-LocalUser -Name $username -Password $securePassword } catch { # Обработка ошибки, если пароль не удалось сменить $status = "Failed: $_" } # Добавление результатов в новый массив данных $results += [PSCustomObject]@{ UserName = $username NewPassword = $newPassword Status = $status } } else { # Если имя пользователя или пароль пустые, пропускаем и записываем статус $results += [PSCustomObject]@{ UserName = "N/A" NewPassword = "N/A" Status = "Failed: Username or password is empty or null" } } } # Запись обновленных данных обратно в Excel $results | Export-Excel -Path $excelFilePath -WorksheetName "UpdatedUsers"