Пакетное / 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"