batch / powershell备份wlan配置文件 - 需要提升权限(不是管理员!)

时间:2015-11-23 15:40:21

标签: powershell batch-file backup profile wlan

基本上,我想通过批处理或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兼容。

1 个答案:

答案 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"