Пакетное / PowerShell для резервного копирования профилей WLAN - нужны повышенные права (не администратор!)

По сути, я хочу сделать резервную копию профилей WLAN моих пользователей через пакет или PowerShell. Эта команда работает довольно хорошо:

netsh wlan export profile key=clear folder="%appdata%\wlan-profiles"

я нуждаюсь key=clear поэтому я могу импортировать эти профили независимо от Win7 / Win8 / Win10.

Вот проблема: командную оболочку нужно запускать с повышенными правами (как обычный пользователь (не администратор!)), Потому что в противном случае пароль будет экспортирован в виде хэша, а не в виде открытого текста. Если пароль хранится как хеш, его невозможно импортировать в другую систему.

Есть ли способ перевести пакетный или PowerShell-скрипт в режим повышенных прав без ввода пароля? ИЛИ Есть ли другой способ экспортировать профили WLAN в виде открытого текста?

Я думал о запланированном задании, но если вы хотите дать параметр /RL HIGHEST (Запускайте с наивысшими привилегиями), тогда вам нужно запустить и эту команду с повышенными правами

У кого-нибудь есть идеи или обходные пути, как это сделать?

Он должен работать как обычный пользователь и должен быть совместим с Win7 до Win10.

1 ответ

Решение

Мое решение:

Я развертываю установку, которая устанавливает запланированную задачу (задача запускается как 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"
Другие вопросы по тегам