Showing the UAC prompt in PowerShell if the action requires elevation

前端 未结 3 2006
轻奢々
轻奢々 2020-12-08 16:48

I have a simple PowerShell script to stop a process:

$p = get-process $args
if ( $p -ne $null )
{
$p | stop-process
$p | select ProcessName, ID, HasExited, C         


        
相关标签:
3条回答
  • 2020-12-08 17:02

    First install PowerShell Community Extensions choco install pscx via Chocolatey (you may have to restart your shell environment)

    then enable pscx

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser #allows scripts to run from the interwebs, such as pcsx
    

    Then use Invoke-Elevated, for example

    Invoke-Elevated {Add-PathVariable $args[0] -Target Machine} -ArgumentList $MY_NEW_DIR
    
    0 讨论(0)
  • 2020-12-08 17:05

    AFAIK, there is no way to do it in the sense that you seem to want. That is running a specified .exe and expecting a prompt to appear immediately.

    What I do is for commands that I know have to be run with administrative privs, I run them with a functions I have laying around called Invoke-Admin. It ensures that I'm running as admin and will prompt the user with the UAC dialog if i'm not before running the command.

    Here it is

    function Invoke-Admin() {
        param ( [string]$program = $(throw "Please specify a program" ),
                [string]$argumentString = "",
                [switch]$waitForExit )
    
        $psi = new-object "Diagnostics.ProcessStartInfo"
        $psi.FileName = $program 
        $psi.Arguments = $argumentString
        $psi.Verb = "runas"
        $proc = [Diagnostics.Process]::Start($psi)
        if ( $waitForExit ) {
            $proc.WaitForExit();
        }
    }
    
    0 讨论(0)
  • 2020-12-08 17:17

    This script sectio check for the Medium Mandatory level token (non elevated admin) and restarts the script elevated.

    if ($Mygroups -match ".*Mandatory Label\\Medium Mandatory Level") {
      #non elevated admin: elevating
      write-host "Elevate"
      start-process powershell -Argumentlist "$PSCommandPath  -Yourargument $Youragumentvalue" -verb runas -Wait 
      exit
    }
    
    0 讨论(0)
提交回复
热议问题