2010-02-12 21:46:32 +0000 2010-02-12 21:46:32 +0000
63
63

как запустить сценарий Powerhell от имени администратора

На моем рабочем столе Windows 7 у меня есть script.ps1, которому нужны привилегии администратора (он запускает службу). Я хочу нажать на этот сценарий и запустить его с правами администратора.

Какой самый простой способ сделать это?

Ответы (7)

53
53
53
2010-02-13 12:58:54 +0000

Вот один из способов сделать это, с помощью дополнительной иконки на рабочем столе. Я думаю, что вы могли бы переместить скрипт кто-то другой, если бы вы хотели иметь только одну иконку на рабочем столе.

  1. Создайте ярлык для сценария Powershell на рабочем столе
  2. Щелкните правой кнопкой мыши по ярлыку и выберите Свойства
  3. Перейдите на вкладку Shortcut
  4. Нажмите Дополнительные
  5. Выберите Запустить от имени администратора

Теперь вы можете запустить сценарий повышенной сложности простым двойным щелчком мыши по новому ярлыку на рабочем столе.

20
20
20
2013-01-10 17:29:06 +0000

На системах, поддерживающих UAC, чтобы убедиться, что сценарий работает с полными привилегиями администратора, добавьте этот код в начало вашего сценария:

param([switch]$Elevated)

function Test-Admin {
  $currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
  $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}

if ((Test-Admin) -eq $false) {
    if ($elevated) 
    {
        # tried to elevate, did not work, aborting
    } 
    else {
        Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
}

exit
}

'running with full privileges'

при запуске сценария с ключом -elevated, он будет пытаться повысить привилегии перед запуском.

13
13
13
2010-11-27 11:48:43 +0000

если ты в той же скорлупе, ты можешь сделать это:

Start-Process powershell -verb runas -ArgumentList "-file fullpathofthescript"
```.
4
4
4
2010-02-12 22:02:27 +0000

Так как он находится на рабочем столе, я бы сказал, что самый простой способ сделать это - перетащить его на гаджет высоты .

Иначе вы можете сделать отдельный скрипт, используя команда elevate на вашем ps1 скрипте.

Или вы можете применить elevate только к стартовому битовому элементу сервиса.

1
1
1
2015-07-16 17:57:01 +0000

PowerShell ISE живет на %windir%\system32\WindowsPowerShell\v1.0\PowerShell_ISE.exe. Вы можете щелкнуть на нем правой кнопкой мыши, выбрать “Запустить от имени администратора” и запустить оттуда сценарий.

Вы также можете найти его под логотипом Windows > Все программы > Аксессуары > Windows PowerShell и сделать то же самое с этими ярлыками.

0
0
0
2019-07-15 04:56:44 +0000

Если вам нужна опция запуска скрипта Powershell от имени администратора, непосредственно из контекстного меню проводника, смотрите раздел 2 моего ответа здесь: https://stackoverflow.com/a/57033941/2441655

-1
-1
-1
2017-10-23 20:34:16 +0000

Добавьте это в начало скрипта:

$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
$testadmin = $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
if ($testadmin -eq $false) {
Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
exit $LASTEXITCODE
}

関連する質問

3
28
13
7
9