【问题标题】:batch/powershell to backup wlan profiles - need elevated rights (not admin!)批处理/powershell 备份 wlan 配置文件 - 需要提升权限(不是管理员!)
【发布时间】:2015-11-23 15:40:20
【问题描述】:

基本上,我想通过批处理或 PowerShell 备份我的用户的 WLAN 配置文件。该命令运行良好:

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

我需要key=clear,这样我就可以独立于 Win7/Win8/Win10 导入这些配置文件。

问题是:命令 shell 需要启动提升(作为普通用户(不是管理员!)),否则密码将被导出为散列而不是明文。如果密码存储为哈希,则无法将其导入其他系统。

有没有什么方法可以在不输入密码的情况下让批处理或 PowerShell 脚本进入提升模式? 还有其他方法可以以明文形式导出 WLAN 配置文件吗?

我想到了一个计划任务,但是如果你想给参数/RL HIGHEST(以最高权限运行),那么你也需要提升运行这个命令。

是否有人有任何想法或解决方法如何做到这一点?

它需要像普通用户一样工作,并且应该从Win7兼容到Win10。

【问题讨论】:

  • 我不确定您所说的提升权限是什么意思,但不是管理员。你能澄清一下吗?
  • 现有的多种解决方案有什么问题:[batch-file] elevate?
  • 好的,我试着解释一下:你是一个普通用户(没有管理员权限),如果你在一个正常的 cmd 中运行上面的命令,那么 wlan 密码将被加密存储。如果您使用普通用户帐户启动 cmd 提升(Stg+Shift),那么它将以明文形式存储。
  • 现有的解决方案有什么问题,据我所知,可以解决问题?我的意思是你试过那些自动高程批处理文件吗?
  • 在我发现 uac 弹出的所有解决方案中,您需要输入密码。我正在寻找无需输入密码的解决方案。

标签: powershell batch-file backup profile wifi


【解决方案1】:

我的解决方案:

我部署了一个安装计划任务的安装(任务以 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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    相关资源
    最近更新 更多