Лучше избегать использования терминальных команд в Windows. Вместо этого попробуйте сделать то же самое с помощью IDE, например Eclipse + PyDev. Это значительно упростит задачу.
Pushpak Dagade
8
@Pushpak Dagade: В общем, я был ошеломлен вашим комментарием, но когда я пошел напечатать это, я понял, что это ПЕРЕПОЛНЕНИЕ СТЕКА. Это люди, которые ДЕЙСТВИТЕЛЬНО используют терминал в Windows. =) Я имею в виду, что иначе PowerShell, скорее всего, не существовал бы.
Брент Риттенхаус,
2
Кроме того, что, если бы он создавал сценарий для автоматизации задачи? (Да, я понимаю, что вы можете запустить ЭТО как привилегированный пользователь.)
Брент Риттенхаус,
Попробуйте мой wsudo , sudo-подобный инструмент для Windows, доступный в виде пакета Chocolatey.
Носератион
Ответы:
102
В sudoWindows нет команды. Ближайший эквивалент - «запускать от имени администратора».
Вы можете сделать это с помощью runasкоманды с уровнем доверия администратора или щелкнув правой кнопкой мыши программу в пользовательском интерфейсе и выбрав «Запуск от имени администратора».
Вы знаете, меняется ли поведение runas от версии к версии? Я установил Win7 Enterprise, и все комбинации, которые я пробовал с runas, создают новый cmd без прав администратора
notNullGothik
4
Sudo для Windows (sudowin) позволяет авторизованным пользователям запускать процессы с повышенными привилегиями, используя свою собственную парольную фразу. В отличие от команды runas, Sudo для Windows сохраняет профиль пользователя и права собственности на созданные объекты. Вы можете получить его здесь: sourceforge.net/projects/sudowin
Джо Биглер
Проверьте gsudo( stackoverflow.com/a/58753166/97471 ). Это sudo для окон с *nix sudoпользовательским интерфейсом: разрешение выполнять команду внутри текущей консоли и кеш учетных данных (только одно всплывающее окно UAC).
Херардо Гриньоли
runas - повышение учетной записи пользователя в Администраторах; sudo - другое дело. Это не должен быть общепринятым ответом.
Массимо
16
Откройте блокнот и вставьте этот код:
@echo off
powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/c cd /d %CD% && %*'"
@echo on
Затем сохраните файл как sudo.cmd. Скопируйте этот файл и вставьте его C:\Windows\System32или добавьте путь sudo.cmdк вашей переменной среды PATH.
Когда вы открываете командную строку, теперь вы можете запустить что-то вроде sudo start ..
Если вы хотите, чтобы окно командной строки администратора оставалось открытым при запуске команды, измените код в блокноте на следующий:
@echo off
powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"
@echo on
Пояснение:
powershell -Command запускает команду PowerShell.
Start-Process - это команда PowerShell, запускающая процесс, в данном случае командную строку.
-Verb RunAs запускает команду от имени администратора.
-Argument-List запускает команду с аргументами.
Наши аргументы такие '/c cd /d %CD% && %*'. %*означает все аргументы, поэтому, если бы вы это сделали sudo foo bar, он бы запустился в командной строке, foo barпотому что параметры - foo и bar, и %*вернет foo bar. cd /d %CD%это команда для перехода в текущий каталог. Это гарантирует, что при открытии окна с повышенными правами каталог будет таким же, как и в обычном окне. что &&означает , что если первая команда успешно, запустить вторую команду.
Параметр /ccmd для закрытия окна после завершения команды, а /kпараметр cmd для сохранения окна открытым.
Кредит Адам Plocher для пребывания в текущем коде каталога.
Одна из проблем заключается в том, что после повышения вы больше не находитесь в текущей папке, а находитесь в папке C:\Windows\System32.
Носератион
2
@noseratio true, похоже, что изменение на это сработает, однако:powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"
Адам Плохер
@AdamPlocher, это может работать, но могут возникнуть проблемы, если в командной строке %*есть кавычки. Вот почему я создал на основе wsudoPowerShell.
Носератио
Это повышение учетной записи пользователя в Администраторах; sudo - другое дело.
Массимо
Не могли бы вы просто пропустить echoпервую @и третью строки, добавив их к строке PowerShell?
nudl
14
Все ответы объясняют, как повысить вашу команду на новом хосте консоли.
Что меня позабавило, так это то, что ни один из этих инструментов не ведет себя так *nix sudo, как позволяет выполнять команду в текущей консоли.
Я создал инструмент командной строки wsudoс открытым исходным кодом sudoдля Windows для запуска программ или команд с повышенными правами в контексте текущего каталога . Он доступен как шоколадный пакет .
Я часто использую его для таких вещей, как настройка агентов сборки, администрирования sfc /scannow, dism /online /cleanup-image /restorehealthили просто для установки / обновления моих локальных пакетов Chocolatey. Используйте на свой риск.
wsudo- это sudoпохожий на Linux инструмент для Windows, позволяющий запускать программу с повышенными правами (в качестве администратора) из командной строки, не относящейся к административной оболочке, и сохранять ее текущий каталог.
Эта реализация не зависит от устаревшего Windows Script Host ( CScript). Вместо этого он использует вспомогательный сценарий PowerShell 5.1, который вызывает "Start-Process -Wait -Verb runAs ..."командлет. Скорее всего, в вашей системе уже установлен PowerShell 5.x, в противном случае вам будет предложено установить его как зависимость.
Применение
wsudoзапускает программу или встроенную команду с повышенными правами в текущем каталоге. Примеры:
wsudo .\myAdminScript.bat
wsudox "del C:\Windows\Temp\*.* && pause"
wasudo cup all -y
wasudox start notepad C:\Windows\System32\drivers\etc\hosts
Спасибо, что опубликовали "wsudo", для меня это очень полезно. Я думаю, что ваше преимущество wsudo заключается в том, что рабочий каталог не похож на альтернативы. Я не мог найти никого, кто может хранить CWD, кроме wsudo. Думаю, вам стоит выделить этот момент в описании. Я действительно ценю вашу работу.
benok 05
3
Еще одна вещь, о которой нужно сообщить. Вы знаете, как взломать адресную строку, чтобы открыть оболочку напрямую? Обычно я использую этот хак, но меня очень расстраивало, когда я хотел получить расширенную оболочку с помощью этого хака. Я пытался найти много альтернатив, но не работает. Наконец-то я могу открыть один с "wasudo [shell]". Я люблю это.
Еще
3
@benok, да, действительно полезный хак! Рад, wasudoчто тебе стало проще. Я сам в основном живу в интегрированном консольном терминале VSCode, поэтому просто набираю его wasudo:) Следующим улучшением будет наследование переменных среды .
Носератио 05
Привет @benok, возможно, вас заинтересует моя новая утилита для повышения производительности копирования / вставки / запуска, DevComrade :)
Noratio
5
runasкоманда требует, чтобы пользователи вводили пароль. Если вы не хотите вводить пароль и хотите просто щелкнуть диалоговое окно UAC, используйте Start-Process -Verb runasPowerShell вместо runascommand.
Это повышение учетной записи пользователя в Администраторах; sudo - другое дело.
Массимо
4
Обычно вы этого не сделаете, так как в любом случае вы бы не запускали его под * nix. Выполняйте разработку в каталоге пользователя, а затем развертывайте его в системных каталогах.
Это повышение учетной записи пользователя в Администраторах; sudo - другое дело.
Массимо
2
Следующий сценарий vbs позволяет запускать заданную команду с аргументами с повышением прав и имитирует поведение исходной команды sudo unix для ограниченного набора используемых случаев (он не будет кэшировать учетные данные и не позволяет действительно выполнять команды с разными учетными данными). Я его надел C:\Windows\System32.
как мы можем заставить сценарий ждать ввода пользователя, чтобы мы могли прочитать вывод программы оболочки?
Ахмад Хаджар
1
Вы имеете в виду интерактивную команду оболочки? Что ж, сначала вы должны попытаться убедиться, что запущенная команда будет ждать возврата. Вот вроде возможно. Затем вы должны получить результат от объектов оболочки и вывести его, что, я думаю, также возможно. Однако не ожидайте, что все, что вы можете делать в unix, станет возможным.
ceztko
В Windows 10 выдает синтаксическую ошибку в строке 1, символ 6.
Мартин Браун,
Это повышение учетной записи пользователя в Администраторах; sudo - другое дело.
Массимо
1
Я думаю, что попробовал шаги ниже после некоторого исследования и преуспел
1. Установите scoop с помощью powershell 3 (iex (new-object net.webclient) .downloadstring (' https://get.scoop.sh ')) 2. выполните scoop install --global sudo 3. убедитесь, что пути (C: \ Users \\ scoop \ shims & C: \ ProgramData \ scoop \ shims) добавлены в переменную пути среды.
В случае Windows нет команды sudo, а также нет необходимости помещать какие-либо $. Для установки Angular CLI через командную строку node.js в Windows я просто написал npm install -g @ angular / cli и затем нажал Enter. Работало нормально.
В Windows Powershell вы можете использовать команду Start-Process с возможностью -Verb RunAsзапуска и повышения уровня процесса. Вот мой пример функции sudo:
function sudo {
Start-Process @args -verb runas
}
Пример: открыть файл hosts от имени администратора в блокноте.
Этот ответ должен включать текст командного файла, не зависящий от ссылки с сайта из-за гниения ссылок. Также ответ должен включать заявление об отказе от ответственности, что этот сценарий пытается имитировать грубое поведение sudo, но на самом деле это не sudo (это псевдо-sudo).
аски
0
Чтобы просто запустить команду от имени администратора в Powershell без повышенных прав, вы можете использовать ее Start-Processнапрямую, в частности, с правильными параметрами -Verb runas.
Это намного сложнее sudo, особенно потому, что вы не можете просто повторно использовать предыдущую команду с дополнительной опцией. Вам нужно указать аргументы вашей команды отдельно.
Вот пример использования команды маршрута для изменения шлюза:
Это не удается, потому что мы не находимся в PS с повышенными правами:
Ответы:
В
sudo
Windows нет команды. Ближайший эквивалент - «запускать от имени администратора».Вы можете сделать это с помощью
runas
команды с уровнем доверия администратора или щелкнув правой кнопкой мыши программу в пользовательском интерфейсе и выбрав «Запуск от имени администратора».источник
gsudo
( stackoverflow.com/a/58753166/97471 ). Это sudo для окон с*nix sudo
пользовательским интерфейсом: разрешение выполнять команду внутри текущей консоли и кеш учетных данных (только одно всплывающее окно UAC).Откройте блокнот и вставьте этот код:
@echo off powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/c cd /d %CD% && %*'" @echo on
Затем сохраните файл как
sudo.cmd
. Скопируйте этот файл и вставьте егоC:\Windows\System32
или добавьте путьsudo.cmd
к вашей переменной среды PATH.Когда вы открываете командную строку, теперь вы можете запустить что-то вроде
sudo start .
.Если вы хотите, чтобы окно командной строки администратора оставалось открытым при запуске команды, измените код в блокноте на следующий:
@echo off powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'" @echo on
Пояснение:
powershell -Command
запускает команду PowerShell.Start-Process
- это команда PowerShell, запускающая процесс, в данном случае командную строку.-Verb RunAs
запускает команду от имени администратора.-Argument-List
запускает команду с аргументами.Наши аргументы такие
'/c cd /d %CD% && %*'
.%*
означает все аргументы, поэтому, если бы вы это сделалиsudo foo bar
, он бы запустился в командной строке,foo bar
потому что параметры - foo и bar, и%*
вернетfoo bar
.cd /d %CD%
это команда для перехода в текущий каталог. Это гарантирует, что при открытии окна с повышенными правами каталог будет таким же, как и в обычном окне. что&&
означает , что если первая команда успешно, запустить вторую команду.Параметр
/c
cmd для закрытия окна после завершения команды, а/k
параметр cmd для сохранения окна открытым.Кредит Адам Plocher для пребывания в текущем коде каталога.
источник
C:\Windows\System32
.powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"
%*
есть кавычки. Вот почему я создал на основеwsudo
PowerShell.echo
первую@
и третью строки, добавив их к строке PowerShell?Все ответы объясняют, как повысить вашу команду на новом хосте консоли.
Что меня позабавило, так это то, что ни один из этих инструментов не ведет себя так
*nix sudo
, как позволяет выполнять команду в текущей консоли.Итак, я написал: gsudo
Исходный код https://github.com/gerardog/gsudo
Установка
Через совок
Или через Шоколадный
Ручная установка:
Демо
источник
Я создал инструмент командной строки
wsudo
с открытым исходным кодомsudo
для Windows для запуска программ или команд с повышенными правами в контексте текущего каталога . Он доступен как шоколадный пакет .Я часто использую его для таких вещей, как настройка агентов сборки, администрирования
sfc /scannow
,dism /online /cleanup-image /restorehealth
или просто для установки / обновления моих локальных пакетов Chocolatey. Используйте на свой риск.Установка
Chocolatey должен быть уже установлен.
Цель
wsudo
- этоsudo
похожий на Linux инструмент для Windows, позволяющий запускать программу с повышенными правами (в качестве администратора) из командной строки, не относящейся к административной оболочке, и сохранять ее текущий каталог.Эта реализация не зависит от устаревшего Windows Script Host (
CScript
). Вместо этого он использует вспомогательный сценарий PowerShell 5.1, который вызывает"Start-Process -Wait -Verb runAs ..."
командлет. Скорее всего, в вашей системе уже установлен PowerShell 5.x, в противном случае вам будет предложено установить его как зависимость.Применение
wsudo
запускает программу или встроенную команду с повышенными правами в текущем каталоге. Примеры:Для получения дополнительных сведений посетите репродукцию GitHub .
источник
wasudo
что тебе стало проще. Я сам в основном живу в интегрированном консольном терминале VSCode, поэтому просто набираю егоwasudo
:) Следующим улучшением будет наследование переменных среды .runas
команда требует, чтобы пользователи вводили пароль. Если вы не хотите вводить пароль и хотите просто щелкнуть диалоговое окно UAC, используйтеStart-Process -Verb runas
PowerShell вместоrunas
command.см .: http://satob.hatenablog.com/entry/2017/06/17/013217
источник
Обычно вы этого не сделаете, так как в любом случае вы бы не запускали его под * nix. Выполняйте разработку в каталоге пользователя, а затем развертывайте его в системных каталогах.
источник
в Windows вы можете использовать команду runas. Для пользователей Linux есть несколько альтернатив sudo в Windows, вы можете проверить это
http://helpdeskgeek.com/free-tools-review/5-windows-alternatives-linux-sudo-command/
источник
Типа есть. Я создал Sudo для Windows еще в 2007 году? 08? Вот документ по безопасности, который я написал об этом - https://www.sans.org/reading-room/whitepapers/bestprac/sudo-windows-sudowin-1726 . Уверен, что http://sudowin.sf.net тоже работает.
источник
Вы можете использовать команду runas - http://technet.microsoft.com/en-us/library/bb490994.aspx или sudowin - http://sourceforge.net/projects/sudowin/
источник
Следующий сценарий vbs позволяет запускать заданную команду с аргументами с повышением прав и имитирует поведение исходной команды sudo unix для ограниченного набора используемых случаев (он не будет кэшировать учетные данные и не позволяет действительно выполнять команды с разными учетными данными). Я его надел
C:\Windows\System32
.Set objArgs = WScript.Arguments exe = objArgs(0) args = "" IF objArgs.Count >= 2 Then args = args & objArgs(1) End If For it = 2 to objArgs.Count - 1 args = args & " " & objArgs(it) Next Set objShell = CreateObject( "WScript.Shell") windir=objShell.ExpandEnvironmentStrings("%WINDIR%") Set objShellApp = CreateObject("Shell.Application") objShellApp.ShellExecute exe, args, "", "runas", 1 set objShellApp = nothing
Пример использования в командной строке
sudo net start service
источник
Я думаю, что попробовал шаги ниже после некоторого исследования и преуспел
1. Установите scoop с помощью powershell 3 (iex (new-object net.webclient) .downloadstring (' https://get.scoop.sh ')) 2. выполните scoop install --global sudo 3. убедитесь, что пути (C: \ Users \\ scoop \ shims & C: \ ProgramData \ scoop \ shims) добавлены в переменную пути среды.
источник
В случае Windows нет команды sudo, а также нет необходимости помещать какие-либо $. Для установки Angular CLI через командную строку node.js в Windows я просто написал npm install -g @ angular / cli и затем нажал Enter. Работало нормально.
источник
откройте консоль от имени администратора. Щелкните правой кнопкой мыши командную строку или bash -> еще и выберите «Запуск от имени администратора».
источник
В Windows Powershell вы можете использовать команду Start-Process с возможностью
-Verb RunAs
запуска и повышения уровня процесса. Вот мой пример функции sudo:Пример: открыть файл hosts от имени администратора в блокноте.
источник
Использование
sudo
команды для оконных пользователей дает вам следующие предложения:Сначала установите
scoop
инструмент управления пакетами и выполните следующие команды:Затем используйте
scoop
для установкиsudo
команду:Наконец, вы можете выполнить команду с помощью
sudo
:источник
Рада помочь.
Чтобы создать команду sudo, выполните следующие действия: -
https://gist.github.com/coder-examples/5ca6c141d6d356ddba4e356d63fb2c13
Надеюсь, что это поможет вам
источник
Чтобы просто запустить команду от имени администратора в Powershell без повышенных прав, вы можете использовать ее
Start-Process
напрямую, в частности, с правильными параметрами-Verb runas
.Это намного сложнее
sudo
, особенно потому, что вы не можете просто повторно использовать предыдущую команду с дополнительной опцией. Вам нужно указать аргументы вашей команды отдельно.Вот пример использования команды маршрута для изменения шлюза:
Это не удается, потому что мы не находимся в PS с повышенными правами:
Это работает после принятия UAC:
Или для команды, которая требует
cmd.exe
:источник