是否可以通过编程方式将wifi配置文件添加到windows操作系统(最低版本为windows7)中?我试过netsh的 add profile 和 connect,但是它对我不起作用。有没有powershell命令可以做到这一点?我想为许多客户端自动设置一个特殊的ssid的wifi密码。我希望有人有一个想法或可以给予我一个命令与此示例信息:
谢谢
goqiplq21#
我找到了一个添加WiFi配置文件的方法。首先导出现有的wifi配置文件:
netsh wlan export profile name="WifiNetwork" folder="C:\path\" key=clear
然后,您将得到一个具有以下样式的XML文件:
<?xml version="1.0"?> <WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1"> <name>WifiNetwork</name> <SSIDConfig> <SSID> <hex>576966694E6574776F726B</hex> <name>WifiNetwork</name> </SSID> </SSIDConfig> <connectionType>ESS</connectionType> <connectionMode>auto</connectionMode> <MSM> <security> <authEncryption> <authentication>WPA2PSK</authentication> <encryption>AES</encryption> <useOneX>false</useOneX> </authEncryption> <sharedKey> <keyType>passPhrase</keyType> <protected>false</protected> <keyMaterial>Password123</keyMaterial> </sharedKey> </security> </MSM> </WLANProfile>
那么你可以修改这个文件,并导入它添加此wifi与此命令:
netsh wlan add profile filename="C:\path\WifiNetwork.xml"
通过以下方式检查您的配置文件:
netsh wlan show profile
使用密钥检查您的配置文件:
netsh wlan show profiles WifiNetwork key=clear
我希望我能用这个信息帮助一些人。
9rygscc12#
我编写了一个power shell脚本-以下代码中的前三行尚未经过测试,因为在我的脚本中,我从CSV文件中获取它-其余部分保持原样-并在我拥有的两个SSID上工作
$profilefile="ACprofile.xml" $SSID="ACSSID" $PW="12345678" $SSIDHEX=($SSID.ToCharArray() |foreach-object {'{0:X}' -f ([int]$_)}) -join'' $xmlfile="<?xml version=""1.0""?> <WLANProfile xmlns=""http://www.microsoft.com/networking/WLAN/profile/v1""> <name>$SSID</name> <SSIDConfig> <SSID> <hex>$SSIDHEX</hex> <name>$SSID</name> </SSID> </SSIDConfig> <connectionType>ESS</connectionType> <connectionMode>auto</connectionMode> <MSM> <security> <authEncryption> <authentication>WPA2PSK</authentication> <encryption>AES</encryption> <useOneX>false</useOneX> </authEncryption> <sharedKey> <keyType>passPhrase</keyType> <protected>false</protected> <keyMaterial>$PW</keyMaterial> </sharedKey> </security> </MSM> </WLANProfile> " $XMLFILE > ($profilefile) netsh wlan add profile filename="$($profilefile)" netsh wlan show profiles $SSID key=clear netsh wlan connect name=$SSID
zyfwsgd63#
我使用了这里的内容,但在尝试添加配置文件时出现错误,因为我们的密码包含“无效字符”。(我得到的错误是“试图加载格式不正确的程序。”在谷歌搜索后发现了原因。)所以我添加了一些逻辑来替换那些不可接受的字符,使它们可以接受。它还强制在脚本所在的文件夹中创建XML文件(出于某种原因,如果没有这个文件夹,我会遇到问题)。最后,我在命令中添加了一个(注解掉的)user=all,如果您想为所有用户添加这个配置文件,而不仅仅是运行脚本的用户(我正在使用),可以很容易地取消注解。
$profilefile = "ACprofile.xml" $SSID = "WifiNetwork" $PW = "Password1234" function Get-ScriptPath() { # If using PowerShell ISE if ($psISE) { $ScriptPath = Split-Path -Parent -Path $psISE.CurrentFile.FullPath } # If using PowerShell 3.0 or greater elseif($PSVersionTable.PSVersion.Major -gt 3) { $ScriptPath = $PSScriptRoot } # If using PowerShell 2.0 or lower else { $ScriptPath = split-path -parent $MyInvocation.MyCommand.Path } # If still not found # I found this can happen if running an exe created using PS2EXE module if(-not $ScriptPath) { $ScriptPath = [System.AppDomain]::CurrentDomain.BaseDirectory.TrimEnd('\') } # Return result return $ScriptPath } # Replace Unacceptable values in password function FormatKey($key) { $key = $key.replace("""", """) $key = $key.replace("&", "&") $key = $key.replace("'", "&pos;") $key = $key.replace("<", "<") $key = $key.replace(">", ">") return $key } $PW = FormatKey($PW) $SSIDHEX = ($SSID.ToCharArray() |foreach-object {'{0:X}' -f ([int]$_)}) -join'' $xmlfile = "<?xml version=""1.0""?> <WLANProfile xmlns=""http://www.microsoft.com/networking/WLAN/profile/v1""> <name>$SSID</name> <SSIDConfig> <SSID> <hex>$SSIDHEX</hex> <name>$SSID</name> </SSID> </SSIDConfig> <connectionType>ESS</connectionType> <connectionMode>auto</connectionMode> <MSM> <security> <authEncryption> <authentication>WPA2PSK</authentication> <encryption>AES</encryption> <useOneX>false</useOneX> </authEncryption> <sharedKey> <keyType>passPhrase</keyType> <protected>false</protected> <keyMaterial>$PW</keyMaterial> </sharedKey> </security> </MSM> </WLANProfile> " #Create XML File $XMLFILE > "$(Get-ScriptPath)\$profilefile" #Create, display, then connect to the new network netsh wlan add profile filename="$(Get-ScriptPath)\$profilefile" #user=all netsh wlan show profiles $SSID key=clear netsh wlan connect name=$SSID # Delete the XML file we created Remove-Item "$(Get-ScriptPath)\$profilefile" -Force
3条答案
按热度按时间goqiplq21#
我找到了一个添加WiFi配置文件的方法。
首先导出现有的wifi配置文件:
然后,您将得到一个具有以下样式的XML文件:
那么你可以修改这个文件,并导入它添加此wifi与此命令:
通过以下方式检查您的配置文件:
使用密钥检查您的配置文件:
我希望我能用这个信息帮助一些人。
9rygscc12#
我编写了一个power shell脚本-以下代码中的前三行尚未经过测试,因为在我的脚本中,我从CSV文件中获取它-其余部分保持原样-并在我拥有的两个SSID上工作
zyfwsgd63#
我使用了这里的内容,但在尝试添加配置文件时出现错误,因为我们的密码包含“无效字符”。(我得到的错误是“试图加载格式不正确的程序。”在谷歌搜索后发现了原因。)所以我添加了一些逻辑来替换那些不可接受的字符,使它们可以接受。
它还强制在脚本所在的文件夹中创建XML文件(出于某种原因,如果没有这个文件夹,我会遇到问题)。
最后,我在命令中添加了一个(注解掉的)user=all,如果您想为所有用户添加这个配置文件,而不仅仅是运行脚本的用户(我正在使用),可以很容易地取消注解。