Я обновлял ноутбуки наших компаний, и у меня возник интересный вопрос. Пользователь спросил: «Все ли мои сети Wi-Fi, которые я подключил, перейдут на мою новую машину?»
Теперь в прошлом все, что я делал, это помещал наши корпоративные сети Wi-Fi на новую машину и позволял пользователю самостоятельно искать другие ключи беспроводной сети.
Но так как этот вопрос был задан мне, я осмотрелся и нашел скрипт PowerShell, который извлекает все профили подключения WiFi и их пароли, и он выгружает их из файла на рабочий стол. Затем мы скопируем этот файл журнала и поместим его на рабочий стол их новой машины.
Очень удобно, если пользователь должен подключаться к сети со сложными символами.
Моя проблема в том, что я не единственный член команды, выполняющий эти обновления для ноутбуков, и были времена, когда мы забывали заходить в файл журнала и удалять корпоративную сеть Wi-Fi, поскольку мы не хотим, чтобы пользователи имели этот пароль.
Вот скрипт PowerShell:
(netsh wlan show profiles) | Select-String "\:(.+)$" | %{$name=$_.Matches.Groups[1].Value.Trim(); $_} | %{(netsh wlan show profile name="$name" key=clear)} | Select-String "Key Content\W+\:(.+)$" | %{$pass=$_.Matches.Groups[1].Value.Trim(); $_} | %{[PSCustomObject]@{ PROFILE_NAME=$name;PASSWORD=$pass }} | Format-Table -AutoSize | Out-File $env:USERPROFILE\DESKTOP\Wifi.log
Я пытался добавить предложение where после select-string |, но оно не работает
(netsh wlan show profiles) | Select-String "\:(.+)$" | Where {$name -notcontains "OUR CORP SSID"}| %{$name=$_.Matches.Groups[1].Value.Trim(); $_} | %{(netsh wlan show profile name="$name" key=clear)} | Select-String "Key Content\W+\:(.+)$" | %{$pass=$_.Matches.Groups[1].Value.Trim(); $_} | %{[PSCustomObject]@{ PROFILE_NAME=$name;PASSWORD=$pass }} | Format-Table -AutoSize | Out-File $env:USERPROFILE\DESKTOP\Wifi.log
(netsh wlan show profiles) | Select-String "\:(.+)$" | %{$name=$_.Matches.Groups[1].Value.Trim(); $_} | %{(netsh wlan show profile name="$name" key=clear)} | Select-String "Key Content\W+\:(.+)$" | %{$pass=$_.Matches.Groups[1].Value.Trim(); $_} | %{[PSCustomObject]@{ PROFILE_NAME=$name;PASSWORD=$pass }} | Format-Table -AutoSize | Out-File $env:USERPROFILE\DESKTOP\Wifi.log
Ожидаемый результат: Показать все SSID, КРОМЕ для корпоративных SSID
Фактический результат: он все еще отображается в списке.