PowerShell: запуск команды от имени администратора - PullRequest
234 голосов
/ 07 октября 2011

Вы знаете, как, если вы являетесь администратором системы, и вы можете просто щелкнуть правой кнопкой мыши, скажем, пакетный скрипт и запустить его от имени администратора без ввода пароля администратора?

Мне интересно, как это сделать с помощью скрипта PowerShell. Я не хочу вводить свой пароль; Я просто хочу имитировать щелчок правой кнопкой мыши Запуск от имени администратора метод.

Все, что я прочитал до сих пор, требует от вас ввода пароля администратора.

Ответы [ 25 ]

1 голос
/ 21 января 2014

Помимо ответа Шей Леви, выполните приведенные ниже настройки (только один раз)

  1. Запустите PowerShell с правами администратора.
  2. Следуйте за вопросом переполнения стека PowerShell сообщает, что «в этой системе отключено выполнение сценариев». .
  3. Поместите файл .ps1, например, в любую из папок PATH.Папка Windows \ System32

После настройки:

  1. Нажмите Win + R
  2. Invoke powershell Start-Process powershell -Verb runAs <ps1_file>

Теперь вы можете запускать все в одной командной строке.Вышеуказанное работает на 64-битной Windows 8 Basic.

0 голосов
/ 22 мая 2017

Это уточнение ...

Учетные данные powershell RUNAS / SAVECRED «не безопасны», пробовали, и они добавляют идентификационные данные администратора и пароль в кэш учетных данных и могут использоваться в других местах, OOPS !. Если вы сделали это, я предлагаю вам проверить и удалить запись.

Просмотрите вашу программу или код, поскольку в соответствии с политикой Microsoft вы не можете смешивать код пользователя и администратора в одном и том же двоичном объекте без UAC (точки входа) для выполнения программы от имени администратора. Это будет sudo (то же самое) в Linux.

UAC имеет 3 типа, не указывайте, приглашение или точку входа, сгенерированные в манифесте программы. Это не повышает уровень программы, поэтому, если UAC отсутствует и требуется администратор, произойдет сбой. Хотя UAC является хорошим требованием администратора, он предотвращает выполнение кода без аутентификации и предотвращает выполнение сценария смешанного кода на уровне пользователя.

0 голосов
/ 12 сентября 2016

Чтобы добавить вывод команды к текстовому имени файла, которое включает текущую дату, вы можете сделать что-то вроде этого:

$winupdfile = 'Windows-Update-' + $(get-date -f MM-dd-yyyy) + '.txt'
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -Command `"Get-WUInstall -AcceptAll | Out-File $env:USERPROFILE\$winupdfile -Append`"" -Verb RunAs; exit } else { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -Command `"Get-WUInstall -AcceptAll | Out-File $env:USERPROFILE\$winupdfile -Append`""; exit }
0 голосов
/ 29 августа 2016

Я не видел своего собственного способа сделать это раньше, поэтому попробуйте это.За ним проще следовать, и он занимает гораздо меньше места:

if([bool]([Security.Principal.WindowsIdentity]::GetCurrent()).Groups -notcontains "S-1-5-32-544") {
    Start Powershell -ArgumentList "& '$MyInvocation.MyCommand.Path'" -Verb runas
    }

Очень просто, если текущий сеанс Powershell был вызван с привилегиями администратора, известный SID группы администраторов появится в группах, когдаВы берете текущую личность.Даже если учетная запись является членом этой группы, идентификатор безопасности не будет отображаться, если процесс не был вызван с повышенными учетными данными.

Почти все эти ответы представляют собой вариант чрезвычайно популярного метода Microsoft Бена Армстронга о том, какчтобы выполнить это, не понимая, что на самом деле делает и как еще подражать той же рутине.

0 голосов
/ 04 ноября 2015

Оказывается, это было слишком просто. Все, что вам нужно сделать, это запустить cmd от имени администратора. Затем введите explorer.exe и нажмите Enter. Это открывает Windows Explorer . Теперь щелкните правой кнопкой мыши на сценарии PowerShell, который вы хотите запустить, выберите «запускать с PowerShell», который запустит его в PowerShell в режиме администратора.

Может потребоваться включить политику, введите Y и нажмите ввод. Теперь скрипт будет запускаться в PowerShell от имени администратора. Если он работает красным, это означает, что ваша политика еще не вступила в силу. Затем попробуйте еще раз, и все должно работать нормально.

...