Как мне запустить следующую команду в Windows:
$ sudo django-admin.py startproject NEW
?
Как мне запустить следующую команду в Windows:
$ sudo django-admin.py startproject NEW
?
Ответы:
В 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% && %*'"
echo
первую @
и третью строки, добавив их к строке PowerShell?
Все ответы объясняют, как повысить вашу команду на новом хосте консоли.
Что меня позабавило, так это то, что ни один из этих инструментов не ведет себя так *nix sudo
, как позволяет выполнять команду в текущей консоли.
Итак, я написал: gsudo
Исходный код https://github.com/gerardog/gsudo
Через совок
scoop install gsudo
Или через Шоколадный
choco install gsudo
Ручная установка:
Я создал инструмент командной строки wsudo
с открытым исходным кодом sudo
для Windows для запуска программ или команд с повышенными правами в контексте текущего каталога . Он доступен как шоколадный пакет .
Я часто использую его для таких вещей, как настройка агентов сборки, администрирования sfc /scannow
, dism /online /cleanup-image /restorehealth
или просто для установки / обновления моих локальных пакетов Chocolatey. Используйте на свой риск.
choco install wsudo
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
Для получения дополнительных сведений посетите репродукцию GitHub .
wasudo
что тебе стало проще. Я сам в основном живу в интегрированном консольном терминале VSCode, поэтому просто набираю его wasudo
:) Следующим улучшением будет наследование переменных среды .
runas
команда требует, чтобы пользователи вводили пароль. Если вы не хотите вводить пароль и хотите просто щелкнуть диалоговое окно UAC, используйте Start-Process -Verb runas
PowerShell вместо runas
command.
Обычно вы этого не сделаете, так как в любом случае вы бы не запускали его под * 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. Работало нормально.
В Windows Powershell вы можете использовать команду Start-Process с возможностью -Verb RunAs
запуска и повышения уровня процесса. Вот мой пример функции sudo:
function sudo {
Start-Process @args -verb runas
}
Пример: открыть файл hosts от имени администратора в блокноте.
sudo notepad C:\Windows\System32\drivers\etc\hosts
Рада помочь.
Чтобы создать команду sudo, выполните следующие действия: -
Надеюсь, что это поможет вам
Чтобы просто запустить команду от имени администратора в Powershell без повышенных прав, вы можете использовать ее Start-Process
напрямую, в частности, с правильными параметрами -Verb runas
.
Это намного сложнее sudo
, особенно потому, что вы не можете просто повторно использовать предыдущую команду с дополнительной опцией. Вам нужно указать аргументы вашей команды отдельно.
Вот пример использования команды маршрута для изменения шлюза:
Это не удается, потому что мы не находимся в PS с повышенными правами:
> route change 0.0.0.0 mask 0.0.0.0 192.168.1.3
The requested operation requires elevation.
Это работает после принятия UAC:
> Start-Process route -ArgumentList "change 0.0.0.0 mask 0.0.0.0 192.168.1.3" -Verb runas
Или для команды, которая требует cmd.exe
:
> Start-Process cmd -ArgumentList "/c other_command arguments ..." -Verb runas