Ваш профиль VPN находится прямо в Параметрах, а запланированная задача по-прежнему сообщает, что не может найти подключение. Ничего не повреждено: собственное хранилище VPN в Windows привязано к пользователю, если профиль не создан как профиль для всех пользователей, а задача выполняется от имени той учётной записи, которую называет её principal. Обычно задача читает телефонную книгу, в которой вашего профиля никогда не было. Двух команд и одной настройки задачи достаточно, чтобы это доказать, и их стоит выполнить, прежде чем кто-то перестроит подключение.

Два хранилища хранят одно и то же имя профиля

Собственный профиль VPN в Windows живёт в хранилище той учётной записи, которая его создала. Глобальное хранилище — это другая телефонная книга, которая заполняется только тогда, когда профиль создан с переключателем для всех пользователей в сеансе с повышенными правами. Оба могут хранить профиль с одинаковым именем, и ни одно не является представлением другого.

Прочитайте оба хранилища в одном сеансе и сравните имена, которые они возвращают. Переключатель выбирает глобальное хранилище, и для его чтения обычно требуется сеанс с повышенными правами:

Get-VpnConnection | Select-Object Name, ServerAddress, TunnelType
Get-VpnConnection -AllUserConnection | Select-Object Name, ServerAddress, TunnelType

Если первая команда перечисляет профиль, а вторая нет, никакое изменение учётных данных не поможет задаче, выполняемой от имени другой учётной записи, потому что проблема — членство, а не проверка подлинности. Если обе перечисляют его, хранилище не является причиной, и применяется следующий раздел. Это единственное сравнение закрывает половину таких обращений. Запишите, какое хранилище ответило и от имени какой учётной записи вы выполняли проверку, потому что ответ бессмыслен без обоих фактов.

Прочитайте principal задачи до её учётных данных

Откройте задачу и прочитайте principal, потому что он указывает, какое хранилище видит задача. Задача, настроенная на выполнение от имени SYSTEM, — это не ваша учётная запись с дополнительными правами: у неё собственный профиль и нет доступа к телефонной книге конкретного пользователя, которую вы создали, войдя в систему. Служебная учётная запись ведёт себя точно так же.

Параметр запуска независимо от входа в систему тоже это меняет, потому что тогда у задачи нет интерактивного сеанса, чьи учётные данные можно было бы позаимствовать. Пусть действие запишет whoami в файл, а ответ прочитайте, вместо того чтобы предполагать его.

Диагностика из вашего собственного терминала ничего не говорит об этой проблеме, потому что показывает то, что видит ваша учётная запись. Выполните сравнение от имени задачи через любую утверждённую процедуру, которая у вас для этого есть. Вывод, вставленный из консоли администратора, — это другой набор данных, а не более привилегированный. Если такой процедуры нет, задача должна сама записать ответ, что и настраивает последний раздел.

Найти профиль — это не войти в систему

Профиль для всех пользователей делает конфигурацию шире видимой. Он не переносит сохранённый пароль из создавшей его учётной записи и не передаёт другой учётной записи закрытый ключ, хранящийся в вашем профиле пользователя. Видимость и пригодные учётные данные — две отдельные проверки, и прохождение первой ничего не говорит о второй.

Если задача теперь находит профиль и не проходит проверку подлинности, это прогресс, и этот этап относится к записи. Перенесите сертификат в хранилище компьютера или передайте секрет через собственный механизм развёртывания, вместо того чтобы снова создавать имя подключения. Повторное создание даёт ту же ошибку с более новой отметкой времени. Microsoft документирует обе области , между которыми выбирает переключатель cmdlet.

Неинтерактивные запросы — это ловушка за этим этапом. На запрос PIN или одноразовый код задача без рабочего стола ответить не может, поэтому профиль, который вручную подключается безупречно, под автоматизацией может оказаться непригодным.

Четыре поля, которые нужны записи задачи

Держите значения, определяющие результат, вместе в одном месте, потому что три из них обычно остаются неявными. Записи нужны четыре строки:

  • Путь действия: сценарий или исполняемый файл, который запускает задача, а не ярлык, который для другой учётной записи разрешается иначе.
  • Имя профиля: точная строка, потому что два хранилища могут хранить одно и то же имя, указывающее на разные серверы.
  • Principal: учётная запись, от имени которой выполняется задача, и есть ли у неё интерактивный сеанс.
  • Метод проверки подлинности: что этот principal действительно может завершить, например сертификат из хранилища компьютера, а не ключ в вашем профиле пользователя.

Эти четыре строки отвечают на вопрос, который обращение действительно задаёт: какую конфигурацию использовала автоматизация. Они также переживут следующую перестройку задачи, когда исходного автора нет рядом, чтобы объяснить, почему имя имело значение. Без них та же ошибка возвращается после следующего развёртывания и снова стоит тех же часов.

Определите этап, до которого дошла задача

Инструментируйте действие, вместо того чтобы гадать по результату последнего запуска. Короткая обёртка записывает в одном месте удостоверение, видимое хранилище и результат дозвона:

whoami
Get-VpnConnection -AllUserConnection | Select-Object Name, ServerAddress
rasdial "Office"
schtasks /query /tn "VPN Connect" /v /fo LIST

Команда дозвона печатает собственную ошибку, которая обычно яснее общего сбоя задачи. Запрос возвращает principal и последний код результата рядом, так что удостоверение и результат видны в одном представлении. Эти два факта решают, будет ли следующим шагом изменение хранилища или изменение учётных данных.

Наконец, отделите задачу, подключающуюся после входа пользователя, от туннеля устройства или поддерживаемого сценария до входа в систему. Совместное использование одного профиля не является проектом ни для одного из них, и именно поле principal говорит, какой из трёх случаев вы построили. Если подключение должно существовать до входа в систему, хранилище профилей конкретного пользователя — не тот уровень, который нужно исправлять.

Похожие статьи