Dave Lee
asked on
Save WLAN Profiles names to a txt file
Executing the "netsh wlan show profiles" command I need to save the names of wifi profiles to a txt file for policy wifi and another one for user wifi.
I am using the following code;
This only works for user profiles and not group policy profiles.
Even when I change it to this code, nothing works
I am using the following code;
@echo off &setlocal
set "flag="
(for /f "tokens=1*delims=:" %%a in ('netsh wlan show profiles') do (
if "%%a"=="User profiles" set flag=true
if defined flag if "%%~b" neq "" (
for /f "tokens=*" %%c in ("%%~b") do echo(%%c
)
))>out.txt
type out.txt
This only works for user profiles and not group policy profiles.
netsh wlan show profiles
Profiles on interface Wi-Fi:
Group policy profiles (read only)
---------------------------------
LOGISTICS
User profiles
-------------
<None>
C:\Users\dmarrow\Desktop>
netsh wlan show profiles
Profiles on interface Wi-Fi:
Group policy profiles (read only)
---------------------------------
DISDWIFI-FCNS
User profiles
-------------
HOMEWIFI
C:\Users\dmarrow\Desktop>
Even when I change it to this code, nothing works
@echo off &setlocal
set "flag="
(for /f "tokens=1*delims=:" %%a in ('netsh wlan show profiles') do (
if "%%a"=="Group policy profiles (read only)" set flag=true
if defined flag if "%%~b" neq "" (
for /f "tokens=*" %%c in ("%%~b") do echo(%%c
)
))>out.txt
type out.txt
ASKER
No luck on this one. If it helps here is the netsh command output
However script needs to save any wlan profile now, Should I change the following
to
H:\>netsh wlan show profiles
Profiles on interface Wi-Fi:
Group policy profiles (read only)
---------------------------------
LOGISTICS-Managed
User profiles
-------------
LOGISTICS
H:\>
However script needs to save any wlan profile now, Should I change the following
'^Group policy profiles' {$section = 'GroupPolicyProfile'; Break}
'^User profiles' {$section = 'UserProfile'; Break}
to
'^Group policy profiles' {$section = 'Group policy profiles (read only)'; Break}
'^User profiles' {$section = 'User Profiles'; Break}
No luck on this oneMeaning what exactly?
The script will not generate console output; it will create the two files defined at the end of lines 19 and 20.
Which OS is this?
Is the output under "User Profiles" really listed like this, only the name, without a leading "All User Profile : " or "Current User Profile : "?
If so, then the batch script shouldn't have returned any results,.
ASKER
Yes that is correct, it is not created the text files. OS in Windows 10. Saved script as powershell.
This should work (and report to the console as well):
$section = $null
$profiles = Switch -Regex (& netsh.exe wlan show profiles) {
'^Group policy profiles' {$section = 'GroupPolicyProfile'}
'^User profiles' {$section = 'UserProfile'}
'^\s+((?<Type>.*?)\s*:\s*)?(?<Name>.*)\s*$' {
If ($section) {
$profile = [PSCustomObject]([ordered]@{'Name' = $Matches['Name']; 'Type' = $null})
If ($section -eq 'GroupPolicyProfile') {
$profile.Type = 'GroupPolicy'
} Else {
$profile.Type = If ($Matches['Type'] -eq 'Current User Profile') {'CurrentUser'} Else {'AllUsers'}
}
If ($profile.Name -ne '<None>') {
$profile
}
}
}
}
$profiles
$profiles | Where-Object {$_.Type -eq 'GroupPolicy'} | Select-Object -ExpandProperty Name | Set-Content -Path 'C:\Temp\out_gp.txt'
$profiles | Where-Object {$_.Type -ne 'GroupPolicy'} | Select-Object -ExpandProperty Name | Set-Content -Path 'C:\Temp\out_user.txt'
ASKER
This worked great, thanks! Anyway to output current connected WLAN to textfile wether it's through Group Policy or User configured?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
What's the best method to disable console output? Only thing I need output of is the txt created on in the files.
C:\Temp\out_gp.txt
C:\Temp\out_user.txt
C:\Temp\out_wlan.txt
In my environment I will need to three seperate scripts for each individual txt file and the the output of each individual file will be show on the console.
C:\Temp\out_gp.txt
C:\Temp\out_user.txt
C:\Temp\out_wlan.txt
In my environment I will need to three seperate scripts for each individual txt file and the the output of each individual file will be show on the console.
Just comment out or remove lines 19 and 30 ("... | Out-Default")
ASKER
Okay thanks. I commented out those lines and added the following at the end
Works great, thank you.
Get-Content -Path C:\Temp\out_wlan.txt
Works great, thank you.
Glad I could help.
Once you have your solution, you need to accept the comment(s) that solved your question:
How do I close my question?
http://support.experts-exchange.com/customer/en/portal/articles/2527982-how-do-i-close-my-question
Once you have your solution, you need to accept the comment(s) that solved your question:
How do I close my question?
http://support.experts-exchange.com/customer/en/portal/articles/2527982-how-do-i-close-my-question
ASKER
Thank you so much for helping tackle this. This is better than my last powershell script and gives me better insight into our wireless environment,
Open in new window