У меня только одна учетная запись на моем компьютере с Windows Vista, и у этого пользователя есть права администратора. Однако, когда я пытаюсь выполнить команду в PowerShell, чтобы завершить определенный процесс, меня приветствует сообщение "Доступ запрещен". Как мне стать администратором?
Самый простой способ сделать это - запустить Powershell с токенами администрирования. Для этого щелкните правой кнопкой мыши Powershell (или ярлык к нему) и выберите "Запуск от имени администратора". В качестве альтернативы вы можете использовать elevate.cmd .
Способ Powershell v2 согласно Microsoft - щелкнуть правой кнопкой мыши по ярлыку и выбрать Запуск от имени администратора .
И чтобы поднять в окне Powershell:
start-process powershell –verb runAs
Который из командного файла, ярлыка или строки запуска cmd.exe будет выглядеть (многократно) примерно так:
powershell "start-process powershell -verb runas"
Это открывает новый экземпляр powershell:
function Run-Elevated ($scriptblock)
{
# TODO: make -NoExit a parameter
# TODO: just open PS (no -Command parameter) if $scriptblock -eq ''
$sh = new-object -com 'Shell.Application'
$sh.ShellExecute('powershell', "-NoExit -Command $scriptblock", '', 'runas')
}
Я ожидаю, что есть проблемы с этим - в частности, вы не получите вывод вашего скрипта обратно в вызывающий скрипт. С другой стороны, он будет там в новом экземпляре PS, так что вы можете взломать его там.
Если вы хотите всегда запускать PowerShell с правами администратора, вы можете щелкнуть правой кнопкой мыши ярлык PowerShell, затем нажать кнопку "Дополнительно ..." на вкладке "Ярлык" и выбрать "Запуск от имени администратора". ".
Легкий путь ...
Вот как настроить easy command для получения прав администратора в любое время из любого сеанса PowerShell!
Шаг 1. Откройте свой профиль PowerShell. (Разрешить блокнот для создания файла, если он отсутствует.)
notepad "$profile"
Шаг 2: Вставьте следующий код в любое место этого файла. (Выберите в зависимости от версии PowerShell, которую вы хотите запустить, и обратите внимание, что профиль зависит от версии, поэтому вы можете сделать это для каждой из ваших версий PowerShell, если вы запустите их параллельно).
# PowerShell 5
function GoAdmin { Start-Process PowerShell –Verb RunAs }
# PowerShell Core
function GoAdmin { Start-Process pwsh –Verb RunAs }
Шаг 3. Перезапустите PowerShell. Команда теперь доступна постоянно.
Шаг 4: В любое время, когда вы хотите обратиться к администратору, просто наберите GoAdmin
(и не беспокойтесь о вводе правильного регистра; функции PS фактически нечувствительны к регистру). Конечно, вы можете назвать функцию как-то иначе, например Elevate
или что-то еще, но я не хотел риска конфликтов, поэтому я назвал ее двухсловной фразой без дефисов, чтобы она никогда не конфликтовала с Собственные функции PowerShell.
Обратите внимание, что окно администратора открывается в отдельной оболочке. Вы можете закрыть оригинальную оболочку или оставить ее открытой. Если ваша работа администратора делает что-то "большое", такое как добавление/изменение переменных среды, тогда ваша пользовательская оболочка (не администратор) может просто набрать refreshenv
, чтобы перезагрузить свою среду и получить изменения. (Редактировать: Обнаружено, что refreshenv
предоставляется менеджером пакетов great Chocolatey . Тип Update-SessionEnvironment
вместо этого, если у вас нет шоколада.)
В общем, просто GoAdmin
, сделайте такие вещи для администратора, как установка пакетов (конечно, с https://chocolatey.org/ !), Затем закройте окно администратора и запустите refreshenv
в вашей пользовательской оболочке! Вуаля.