Как определить функцию PowerShell, требующую повышения прав?

Как определить функцию PowerShell, требующую повышения прав?

Поскольку я не могу найти альтернативу Linux'уsudoкоманда возвышения, у меня следующий вопрос:

Как определить функцию PowerShell, которая требует повышения прав? Я имею в виду запрос UAC.

Скажем, такая функция имеет вид:

function system-check {
    SFC /ScanNow
}

Система:

Windows 8.1 Профессиональная 64-битная

PowerShell:

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

ПРАВКА1:

Чтобы быть на 100% понятным, позвольте мне перефразировать:

  1. Я запускаю PowerShell как пользователь
  2. Я запускаю вышеупомянутую функциюsystem-check
  3. Я хочу, чтобы функция была повышена, чтобы иметь возможность выполнить команду; обратите внимание, что я хочу, чтобы появилось приглашение UAC

решение1

Чтобы выполнить определенную команду из окна с повышенными правами:

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

Например:

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

Чтобы запустить определенный скрипт из окна с повышенными правами:

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

Чтобы запустить весь сеанс PowerShell с запросом UAC:

Start-Process powershell.exe -Verb runAs

Функция, возвращающая $True или $False, если текущее окно запущено с повышенными правами:

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

Чтобы гарантировать, что скрипт будет запускаться только от имени администратора, добавьте в начало следующее:

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

В PowerShell v4.0 вышеприведенный пример можно упростить, используя оператор #Requires:

#Requires -RunAsAdministrator

Источник:Запуск с повышенными правами доступа

Связанный контент