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 如何讓普通用戶以管理員權限執行程序

問題解決

相關文章
相關標籤/搜索