Para executar um comando específico a partir de uma janela elevada:
Start-Process -FilePath powershell.exe -ArgumentList {$ScriptBlock} -verb RunAs
Por exemplo:
Start-Process -FilePath powershell.exe -ArgumentList {
SFC /scannow
} -verb RunAs
Para executar um script específico a partir de uma janela elevada:
Start-Process powershell -ArgumentList '-noprofile -file MyScript.ps1' -verb RunAs
Para executar uma sessão inteira do PowerShell solicitando o UAC:
Start-Process powershell.exe -Verb runAs
Uma função para retornar $ True ou $ False se a janela atual estiver sendo executada com permissões elevadas:
function isadmin
{
#Returns true/false
([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")
}
Para garantir que um script seja executado apenas como administrador, adicione isso ao início:
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
Echo "This script needs to be run As Admin"
Break
}
No PowerShell v4.0, os itens acima podem ser simplificados usando uma instrução #Requires:
#Requires -RunAsAdministrator