¿Cómo definir una función de PowerShell que requiere elevación?

¿Cómo definir una función de PowerShell que requiere elevación?

Como no encuentro ninguna alternativa a Linux'sudocomando de elevación, tengo la siguiente pregunta:

¿Cómo definir una función de PowerShell que requiere elevación? Me refiero al aviso de UAC.

Digamos que dicha función es la siguiente:

function system-check {
    SFC /ScanNow
}

Sistema:

Windows 8.1 Pro de 64 bits

Potencia Shell:

Major  Minor  Build  Revision
-----  -----  -----  --------
5      0      10586  117

EDITAR1:

Para ser 100% comprensible permítanme reformular:

  1. Ejecuto PowerShell como usuario
  2. Ejecuto la función antes mencionada.system-check
  3. Quiero que la función se eleve para poder ejecutar el comando; tenga en cuenta que quiero que aparezca el mensaje UAC

Respuesta1

Para ejecutar un comando específico desde una ventana elevada:

Start-Process -FilePath powershell.exe -ArgumentList {$ScriptBlock} -verb RunAs

Por ejemplo:

Start-Process -FilePath powershell.exe -ArgumentList {
    SFC /scannow
} -verb RunAs

Para ejecutar un script específico desde una ventana elevada:

Start-Process powershell -ArgumentList '-noprofile -file MyScript.ps1' -verb RunAs

Para ejecutar una sesión completa de PowerShell solicitando UAC:

Start-Process powershell.exe -Verb runAs

Una función para devolver $True o $False si la ventana actual se ejecuta con permisos elevados:

function isadmin
 {
 #Returns true/false
   ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")
 }

Para garantizar que un script solo se ejecute como administrador, agregue esto al principio:

If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
 {
  Echo "This script needs to be run As Admin"
  Break
 }

En PowerShell v4.0, lo anterior se puede simplificar usando una declaración #Requires:

#Requires -RunAsAdministrator

Fuente:Ejecutar con permisos elevados

información relacionada