PowerShell如何让普通用户以管理员权限执行程序

  

Windows的客户端管理经常会遇见一个场景,用户需要升级某个软件,但是需要管理员权限,如果是那些没有通过组策略或者SCCM发布的程序,那么桌面支持需要亲自跑过去,输入管理员用户和密码提升权限进行操作。

  

那么怎么才能让普通的用户能够以管理员权限执行某个程序呢?

  

最简单的方法是创建个快捷方式,路径上指定runas的管理员账号和密码,文件的路径就可以执行了。不过这样的缺点是密码账号都是明文显示的,用户稍微聪明一点就能看的见。解决方法很简单,把runas的操作用脚本实现,然后编译成exe文件就可以隐藏源代码了。

  

下面来个简单的例子我希望以管理员权限来打开teamviewer
写个脚本t2.ps1

  

可以看见密码和用户都是明文显示的

  
 <代码> $ secpasswd=ConvertTo-SecureString的Pa $ $‘-AsPlainText force
  $ mycreds=新对象System.Management.Automation。PSCredential(“管理员”,secpasswd美元)
  
  起动过程“C: \ Program Files \ TeamViewer \ TeamViewer (x86)。exe”凭证美元mycreds  
  

下一步需要编译成exe。这里需要说明一下powershell并不能真正的“编译”成exe,他的实质就是压缩以后加工exe的外壳。一般可以用PowerGui这个软件来编译,不过我懒得下载安装这么大个软件,直接用powershell的脚本也可以实现。这个powershell的脚本已经有人写好了,下载链接https://gallery.technet.microsoft.com/scriptcenter/PS2EXE-GUI-Convert-e7cb69d5

  

下载完成里面都有现成的例子。为了省的事,我直接把我的t2。ps1拖到了例子的目录里面
 PowerShell如何让普通用户以管理员权限执行程序

  

修改一下BuildExamples。ps1,指定目录和图标

  
 <代码> SCRIPTPATH=Split-Path脚本:美元MyInvocation.MyCommand。路径——家长
  ls " $ SCRIPTPATH \ \ *例子。ps1”| % {
  SCRIPTPATH \ ps2exe美元。ps1”“$ (_.Fullname美元)"“美元($ _。Fullname取代.ps1, . exe)”- verbose -iconfile“PSEXE.ico”
  SCRIPTPATH \ ps2exe美元。ps1”“$ (_.Fullname美元)"“美元($ _。Fullname取代‘.ps1’,‘-GUI.exe’)”- verbose -noConsole
  }
  
  Remove-Item " $ SCRIPTPATH \例子\ Progress.exe *”
  Remove-Item " $ SCRIPTPATH \例子\ ScreenBuffer-GUI.exe *”
  
  零美元=Read-Host“按回车退出” 
  

然后执行这个BuildExamples.bat文件,他会自动编译ps1文件为exe文件,并加上指定的图标

  

 PowerShell如何让普通用户以管理员权限执行程序

  

双击我的t2。exe他会自动打开teamviewer

  

 PowerShell如何让普通用户以管理员权限执行程序

  

查看一下进程的确是管理员执行的

  

 PowerShell如何让普通用户以管理员权限执行程序

  

问题解决

PowerShell如何让普通用户以管理员权限执行程序