基本上,我想通过批处理或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:tempwlanuser.ini"){
$userliste=get-content "C:tempwlanuser.ini"
$userlisteneu=gci -Path c:users -Exclude *admin*, *streaming*, *public*, *autologon* , *_* -name
foreach($user in $userlisteneu){
if (-not($pruefung=$userliste -match $user)){
$filename="c:tempwlanWLAN-Backup-$user.xml"
copy "c:tempwlanWLAN-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:tempwlanuser.ini" -Append
}
}
} else {
gci -Path c:users -Exclude *admin*, *streaming*, *public*, *autologon* , *_* -name | Out-File "C:tempwlanuser.ini" -Append
$userliste=get-content "C:tempwlanuser.ini"
foreach($user in $userliste){
$filename="c:tempwlanWLAN-Backup-$user.xml"
copy "c:tempwlanWLAN-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"