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

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

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

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

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

能够看见密码和用户都是明文显示的code

$secpasswd = ConvertTo-SecureString 'Pa$$word' -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("administrator", $secpasswd)

Start-Process "C:\Program Files (x86)\TeamViewer\TeamViewer.exe" -Credential $mycreds

下一步须要编译成exe。这里须要说明一下powershell并不能真正的‘编译’成exe,他的实质就是压缩之后加工exe的外壳。通常能够用PowerGui这个软件来编译,不过我懒得下载安装这么大个软件,直接用Powershell的脚本也能够实现。这个PowerShell的脚本已经有人写好了,下载连接 https://gallery.technet.microsoft.com/scriptcenter/PS2EXE-GUI-Convert-e7cb69d5blog

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

修改一下BuildExamples.ps1, 指定目录和iconip

$SCRIPTPATH = Split-Path $SCRIPT:MyInvocation.MyCommand.Path -parent
ls "$SCRIPTPATH\Examples\*.ps1" | %{
    ."$SCRIPTPATH\ps2exe.ps1" "$($_.Fullname)" "$($_.Fullname -replace '.ps1','.exe')" -verbose -iconfile "PSEXE.ico"
    ."$SCRIPTPATH\ps2exe.ps1" "$($_.Fullname)" "$($_.Fullname -replace '.ps1','-GUI.exe')" -verbose -noConsole
}

Remove-Item "$SCRIPTPATH\Examples\Progress.exe*"
Remove-Item "$SCRIPTPATH\Examples\ScreenBuffer-GUI.exe*"

$NULL = Read-Host "Press enter to exit"

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

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

双击个人t2.exe 他会自动打开teamviewerit

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

查看一下进程的确是administrator执行的

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

问题解决

相关文章
相关标签/搜索