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"