Область профиля VPN в Windows: текущий пользователь или все пользователи?
Область определяет, где хранится собственный профиль VPN Windows и кто может его видеть. Она не превращает подключение в туннель устройства и не передаёт учётные данные.
Вы выполняете команду для профиля VPN, она не возвращает ошибку, а подключение, которое запускает пользователь, ведёт себя точно как раньше. Ничего не сломано. Windows хранит собственные профили VPN в двух хранилищах, и вы отредактировали то, которое не используется. Одно и то же отображаемое имя может существовать в обоих, и именно поэтому скрипт выглядит успешным, а подключение пользователя игнорирует каждое ваше изменение.
Решение не в лучшем скрипте; оно в том, чтобы назвать область раньше, чем профиль.
Симптом и два хранилища
Windows хранит собственные профили VPN в телефонной книге каждого пользователя и в общемашинной книге для всех пользователей. Get-VpnConnection читает хранилище текущего пользователя, а Get-VpnConnection -AllUserConnection — машинное.
Профиль, созданный с -AllUserConnection, виден каждой учётной записи на машине и требует сеанса с повышенными правами для создания или удаления. Профиль, созданный без него, принадлежит учётной записи, выполнившей команду, и другой пользователь при входе не видит вообще ничего. Оба могут носить одно и то же имя, и ни один не предупреждает, что существует другой. Поэтому симптом выглядит как тихий сбой, а не как сообщение об ошибке.
Что область действительно определяет
Область отвечает на два вопроса и отказывается отвечать на третий:
| Question | Current user | All users |
|---|---|---|
| Who can see the profile | The account that created it | Every account on the machine |
| Elevation to create or remove | Not required | Required |
| Where the profile lives | Per-user phone book | Machine-wide phone book |
| Does it authenticate a device | No | No |
| Does it start before sign-in | No | No, that needs a device tunnel |
Именно последние две строки люди понимают неправильно. Профиль для всех пользователей — это хранилище машинной области, а не машинная идентичность, и сам по себе он не делает подключение доступным до чьего-либо входа. Туннель устройства Windows Always On — отдельная конфигурация со своими требованиями к сертификату и профилю. Область касается того, кто может видеть профиль, а не того, чем является машина.
Видимость — не аутентификация
Профилю для всех пользователей по-прежнему нужна поддерживаемая схема идентичности и учётных данных. Видимость профиля для каждой учётной записи не делает все учётные записи одним и тем же прошедшим проверку пользователем и не объединяет учётные данные.
Если проект требует, чтобы туннель был поднят до входа, ответ — туннель устройства, а не более широкая область профиля. Если проект требует, чтобы каждый человек предъявил собственный сертификат, профиль для отдельного пользователя лучше соответствует этой модели, потому что общемашинный профиль не может предъявить учётные данные, принадлежащие кому-то другому.
Развёртывание и владение политикой
На управляемых машинах EMM или профиль конфигурации может воссоздать сохранённое состояние после вашего изменения.
Это не ошибка в вашем скрипте; это два владельца, пишущих в одно хранилище. Согласуйте область с владельцем политики и предпочитайте менять политику, а не запускать команду по расписанию. Локальное исправление, конкурирующее с политикой, даёт машину, где профиль выглядит правильным до следующей синхронизации.
Что записывать, когда всё ломается
Записывайте три вещи вместе: имя профиля, целевую область и фактическую ошибку подключения.
Маршрут или сертификат, применённый к профилю в другом хранилище, не исправит тот, который запускает пользователь, и текст ошибки будет по-прежнему указывать на подключение, а не на вашу правку. После одобренного изменения переподключитесь через предполагаемую точку входа и проверьте как применённую маршрутизацию, так и сохранённые параметры. Хранилище профилей отвечает на вопрос, что доступно, а активное подключение отвечает на вопрос, что делает устройство сейчас.
Документация Microsoft для Add-VpnConnection перечисляет параметр области рядом с параметрами, которые он изменяет, и это полезное напоминание о том, что область — решение, принимаемое при создании, а не настройка, которую вы переключаете позже.