Пару лет назад в журнале была опубликована моя статья «Сброс пароля локального администратора» (см. «Windows IT Pro/RE» № 11 за 2014 год). С тех пор я получил от читателей множество вопросов. Большинство из них касалось сценария Reset-LocalAdminPassword.ps1 и сводилось к следующему:

  1. Как безопасно ввести новый пароль?
  2. Можно ли с помощью сценария сменить пароль для локальной учетной записи, отличной от встроенной учетной записи Administrator?
  3. Можно ли указать альтернативные учетные данные при смене паролей локальных учетных записей?

В данной статье я представлю новый сценарий, Reset-LocalAccountPassword.ps1, в котором эти вопросы учтены, а процедура смены паролей локальных учетных записей на компьютерах упрощена и стала более безопасной. Код сценария приведен в листинге.

Использование Reset-LocalAccountPassword.ps1

Синтаксис сценария следующий:

Reset-LocalAccountPassword
   [[-ComputerName]
   ] -AdminAccount [-Password
   ] [-Credential
    ]

или

Reset-LocalAccountPassword
   [[-ComputerName]
   ] -AccountName
    [-Password
] [-Credential ]
   [-Confirm] [-WhatIf] [-Verbose]

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

Параметр -AdminAccount указывает, что сценарий должен найти и сбросить пароль встроенной учетной записи Administrator. Обратите внимание, что этот параметр действует, даже если учетная запись Administrator имеет имя, отличное от Administrator. Сценарий отыскивает эту учетную запись по идентификатору безопасности (SID), а не по имени.

Параметр -AccountName указывает имя конкретной учетной записи. Вы можете указать одно имя учетной записи; подстановочные знаки не разрешены. Нельзя указать как -AdminAccount, так и -AccountName в одной команде, эти два параметры исключают друг друга.

Параметр -Password представляет собой объект SecureString, содержащий новый пароль, который предстоит использовать. Если опустить этот параметр, сценарий дважды запросит новый пароль (начальный ввод и подтверждение). Рекомендуется опустить параметр -Password, если вы не имеете опыта сохранения и восстановления объектов SecureString с использованием зашифрованных обычных строк. Дополнительные сведения по этой теме можно найти в упомянутой выше статье.

Параметр -Credential представляет собой объект PSCredential, содержащий административные учетные данные, который может сбрасывать пароли на любом компьютере. Подробнее этот параметр будет рассмотрен ниже.

Смена пароля влечет за собой серьезные последствия, поэтому сценарий запросит подтверждение перед сбросом пароля. Вы можете отключить подтверждение, указав параметр -Confirm:$false в командной строке сценария.

Использование параметров -Verbose и -WhatIf сходно с применением команд PowerShell. Если вы отключили подтверждения с использованием -Confirm:$false, параметр -Verbose заставляет сценарий вывести информацию о каждой выполненной смене пароля, а параметр -WhatIf предписывает сценарию сообщить, какие пароли будут сброшены, не предпринимая никаких действий.

...

Это не вся статья. Полная версия доступна только подписчикам журнала. Пожалуйста, авторизуйтесь либо оформите подписку.
Купить номер с этой статьей в PDF