Чому Get-VpnConnection пропускає деякі профілі VPN у Windows
Get-VpnConnection відповідає на вужче питання, ніж припускає назва: одне власне сховище, одна область за раз і жодного уявлення про сторонні VPN-клієнти.
Введіть Get-VpnConnection, нічого не повертається, і розслідування зазвичай на цьому зупиняється. Порожній вивід читається як доказ, що на машині взагалі немає VPN, навіть коли тунель несе трафік. Команда гаразд; припущення про те, що вона перелічує, — ні. Вона читає одне власне сховище в одній області й нічого не знає про клієнти, які тримають свої профілі.
Одне власне сховище на виклик
Почніть із виклику без аргументів: він націлений на профілі облікового запису, під яким виконано вхід. Саме цей виклик більшість людей запускає першим:
Get-VpnConnection
Кожен повернутий об'єкт несе Name, ServerAddress, TunnelType і ConnectionStatus, і цих чотирьох полів достатньо, щоб розрізнити два записи в заявці. Профіль може місяцями стояти відключеним і все одно залишатися в списку, бо об'єкт описує збережену конфігурацію, а не живий трафік. Порожній результат тут означає, що в сховищі цього користувача для цього облікового запису нічого не було. Це значно слабше твердження, ніж те, яке люди зазвичай у ньому читають.
Телефонній книзі всіх користувачів потрібен власний запит
Профілі, що обслуговують кожен обліковий запис, живуть в окремому списку, і виклик за замовчуванням його ніколи не читає. Це сховище запитують явно:
Get-VpnConnection -AllUserConnection
Коли сеансу бракує прав, чекайте на помилку відмови в доступі, а не на порожній результат, і розрізняйте два наслідки: один означає, що дивитися не можна, інший — що нічого не збережено. Запишіть область поруч із кожним ім'ям, поки вивід перед вами, бо пізніша команда не нагадає, яке сховище вона запитала. Права — звичайна причина, чому колега бачить профіль, який ви бачити не можете. Набори параметрів описано на довідковій сторінці Get-VpnConnection, зокрема те, які ключі належать до якого набору.
Одне ім'я, два різні сховища
Ім'я профілю унікальне всередині свого сховища, а не на всій машині, тому списки для одного користувача й для всіх користувачів можуть кожен містити профіль з ім'ям Office. Обидва записи можуть указувати на різні сервери, використовувати різні типи тунелів і нести різні облікові дані. Лише один із них — той запис, на який користувач клацає двічі. Запишіть область, перш ніж торкатися будь-якого з них.
Видалити копію, яку ніхто не запускає, здається нешкідливим у вікні змін. Це стає дзвінком у підтримку, коли ярлик користувача перестає працювати.
Клієнти, які ніколи не торкаються власного списку
Профіль OpenVPN або WireGuard, імпортований у клієнт постачальника, живе у власній конфігурації цього клієнта, тому ніколи не стає власним записом Windows. Клієнт запускає свою службу, тримає свій список і передає трафік через свій адаптер. Нічого з цього команда не повідомляє, і жоден ключ області цього не покаже. На машині може бути три працюючі тунелі й порожній власний список.
Коли натомість потрібен вигляд адаптерів, опитайте адаптери. Інтерфейси постачальників називають себе самі, тому зіставляйте фрагмент, а не точний рядок:
Get-NetAdapter | Where-Object InterfaceDescription -match 'WireGuard|OpenVPN|TAP'
Створені вручну власні профілі потрапляють у файл телефонної книги під профілем користувача, а аналоги для всіх користувачів лежать у копії для всієї машини. Тому копіювання сховища профілів одного користувача до іншого облікового запису рідко відтворює той самий список. Файл пояснює, звідки взялося заблукале власне підключення. Про сховище клієнта постачальника він не каже нічого.
Що записати перед видаленням профілю
Дешеве страхування — нотатка з п'яти полів: ім'я, область, адреса сервера, стан і точний текст помилки зі спроби користувача. Додайте клієнт, який вони насправді запускають, бо ця деталь вирішує, чи має власний запис узагалі значення. Без неї навіть правильне видалення виглядає причиною наступної невдачі. Тримайте нотатку в заявці, а не у вікні чату.
Видалення — одна команда, і вона стирає конфігурацію, а не вимикає її. Запускайте її лише після того, як ця нотатка існує:
Remove-VpnConnection -Name "Office" -Force
Додайте -AllUserConnection, коли ціль у сховищі для всіх користувачів, і спершу збережіть затверджене джерело конфігурації в іншому місці. Потім один раз підключіться заново й прочитайте таблицю маршрутизації, бо список доводить лише те, що конфігурацію збережено. Чи досягає трафік сервера — окреме питання, на яке жодна кількість виводу Get-VpnConnection не відповість. Якщо користувач зазнає невдачі й після чистого повторного додавання, профіль ніколи не був проблемою.