batch/powershell 备份 wlan 配置文件 - 需要提升权限(不是管理员!)
batch/powershell to backup wlan profiles - need elevated rights (not admin!)
基本上,我想通过批处理或 PowerShell 备份我的用户的 WLAN 配置文件。此命令运行良好:
netsh wlan export profile key=clear folder="%appdata%\wlan-profiles"
我需要 key=clear
这样我就可以独立于 Win7 / Win8 / Win10 导入这些配置文件。
这是问题所在:命令 shell 需要以提升权限启动(作为普通用户(不是管理员!)),否则密码将以散列而不是明文形式导出。如果密码存储为散列,则无法将其导入其他系统。
有什么方法可以让批处理或 PowerShell 脚本在不输入密码的情况下进入提升模式? 或是否有其他方法以明文形式导出 WLAN 配置文件?
我想过计划任务,但是如果你想给参数 /RL HIGHEST
(运行 具有最高权限)那么你还需要 运行 这个命令提升。
有人知道如何做到这一点吗?
它需要像普通用户一样工作,并且应该从 Win7 兼容到 Win10。
我的解决方案:
我部署了一个安装计划任务的安装(任务以 SYSTEM 身份运行),如果新用户登录,它每天运行一个 powershell 脚本,对于每个用户(具有特殊管理员帐户的排除列表)用户指定将创建并导入计划任务。
在您的部署系统或登录脚本中,您可以触发用户计划任务(具有最高权限),以明文形式导出所有带有密码的配置文件(到 %appdata%_wlan)。
它工作得很好,并且在 Windows 7、Windows 8 和 Windows 10 之间兼容。
如果有人需要更多详细信息,请询问。
powershell 脚本:
if(Test-Path "c:\temp\wlan\user.ini"){
$userliste=get-content "C:\temp\wlan\user.ini"
$userlisteneu=gci -Path c:\users -Exclude *admin*, *streaming*, *public*, *autologon* , *_* -name
foreach($user in $userlisteneu){
if (-not($pruefung=$userliste -match $user)){
$filename="c:\temp\wlan\WLAN-Backup-$user.xml"
copy "c:\temp\wlan\WLAN-Backup.xml" $filename
(Get-Content $filename) | Foreach-Object {$_ -replace 'Domain\username',"$env:userdomain$user"} | set-content $filename
cmd /c schtasks /Create /XML $filename /TN WLAN-Backup-$user
$user | Out-File "C:\temp\wlan\user.ini" -Append
}
}
} else {
gci -Path c:\users -Exclude *admin*, *streaming*, *public*, *autologon* , *_* -name | Out-File "C:\temp\wlan\user.ini" -Append
$userliste=get-content "C:\temp\wlan\user.ini"
foreach($user in $userliste){
$filename="c:\temp\wlan\WLAN-Backup-$user.xml"
copy "c:\temp\wlan\WLAN-Backup.xml" $filename
(Get-Content $filename) | Foreach-Object {$_ -replace 'Domain\username',"$env:userdomain$user"} | set-content $filename
cmd /c schtasks /Create /XML $filename /TN WLAN-Backup-$user
}
}
导出命令
%System%\schtasks.exe /Run /TN "WLAN-Backup-%username%"
导入命令
%System%\cmd.exe /c forfiles /p "%appdata%\_wlan" /m *.xml /c "cmd /c netsh wlan add profile filename=@path"
基本上,我想通过批处理或 PowerShell 备份我的用户的 WLAN 配置文件。此命令运行良好:
netsh wlan export profile key=clear folder="%appdata%\wlan-profiles"
我需要 key=clear
这样我就可以独立于 Win7 / Win8 / Win10 导入这些配置文件。
这是问题所在:命令 shell 需要以提升权限启动(作为普通用户(不是管理员!)),否则密码将以散列而不是明文形式导出。如果密码存储为散列,则无法将其导入其他系统。
有什么方法可以让批处理或 PowerShell 脚本在不输入密码的情况下进入提升模式? 或是否有其他方法以明文形式导出 WLAN 配置文件?
我想过计划任务,但是如果你想给参数 /RL HIGHEST
(运行 具有最高权限)那么你还需要 运行 这个命令提升。
有人知道如何做到这一点吗?
它需要像普通用户一样工作,并且应该从 Win7 兼容到 Win10。
我的解决方案:
我部署了一个安装计划任务的安装(任务以 SYSTEM 身份运行),如果新用户登录,它每天运行一个 powershell 脚本,对于每个用户(具有特殊管理员帐户的排除列表)用户指定将创建并导入计划任务。
在您的部署系统或登录脚本中,您可以触发用户计划任务(具有最高权限),以明文形式导出所有带有密码的配置文件(到 %appdata%_wlan)。
它工作得很好,并且在 Windows 7、Windows 8 和 Windows 10 之间兼容。
如果有人需要更多详细信息,请询问。
powershell 脚本:
if(Test-Path "c:\temp\wlan\user.ini"){
$userliste=get-content "C:\temp\wlan\user.ini"
$userlisteneu=gci -Path c:\users -Exclude *admin*, *streaming*, *public*, *autologon* , *_* -name
foreach($user in $userlisteneu){
if (-not($pruefung=$userliste -match $user)){
$filename="c:\temp\wlan\WLAN-Backup-$user.xml"
copy "c:\temp\wlan\WLAN-Backup.xml" $filename
(Get-Content $filename) | Foreach-Object {$_ -replace 'Domain\username',"$env:userdomain$user"} | set-content $filename
cmd /c schtasks /Create /XML $filename /TN WLAN-Backup-$user
$user | Out-File "C:\temp\wlan\user.ini" -Append
}
}
} else {
gci -Path c:\users -Exclude *admin*, *streaming*, *public*, *autologon* , *_* -name | Out-File "C:\temp\wlan\user.ini" -Append
$userliste=get-content "C:\temp\wlan\user.ini"
foreach($user in $userliste){
$filename="c:\temp\wlan\WLAN-Backup-$user.xml"
copy "c:\temp\wlan\WLAN-Backup.xml" $filename
(Get-Content $filename) | Foreach-Object {$_ -replace 'Domain\username',"$env:userdomain$user"} | set-content $filename
cmd /c schtasks /Create /XML $filename /TN WLAN-Backup-$user
}
}
导出命令
%System%\schtasks.exe /Run /TN "WLAN-Backup-%username%"
导入命令
%System%\cmd.exe /c forfiles /p "%appdata%\_wlan" /m *.xml /c "cmd /c netsh wlan add profile filename=@path"