基本上,我想通过批处理或PowerShell备份用户的WLAN配置文件。这个命令工作得很好:
rows.stream().distinct().mapToInt(Row::getDeliveredLength).sum()
我需要netsh wlan export profile key=clear folder="%appdata%\wlan-profiles"
所以我可以独立于Win7 / Win8 / Win10导入这些配置文件。
问题在于:命令shell需要被提升(正常用户(不是管理员!)),否则密码将被导出为哈希而不是纯文本。如果密码存储为哈希,则无法将其导入另一个系统。
有没有办法在不输入密码的情况下将批处理或PowerShell脚本置于提升模式? OR 是否有其他方式以明文方式导出WLAN配置文件?
我考虑过计划任务,但是如果你想提供参数key=clear
(以最高权限运行),那么你也需要提升这个命令。
有些人有任何想法或解决方法如何做到这一点?
它需要以普通用户身份运行,并且应该从Win7到Win10兼容。
答案 0 :(得分:0)
我的解决方案:
我部署安装程序,安装计划任务(任务以SYSTEM身份运行),如果新用户已登录,则每天运行一个powershell脚本,每个用户(具有特殊管理员帐户的排除列表)是用户指定的计划任务将被创建和导入。
在您的部署系统或logonscript中,您可以触发用户计划任务(具有最高权限),该任务以明文密码导出所有配置文件(至%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"