Jak uruchomiłbym następujące polecenie w systemie Windows:
$ sudo django-admin.py startproject NEW
?
Jak uruchomiłbym następujące polecenie w systemie Windows:
$ sudo django-admin.py startproject NEW
?
Odpowiedzi:
W sudo
systemie Windows nie ma polecenia. Najbliższy odpowiednik to „Uruchom jako administrator”.
Możesz to zrobić za pomocą runas
polecenia z poziomem zaufania administratora lub klikając program prawym przyciskiem myszy w interfejsie użytkownika i wybierając opcję „Uruchom jako administrator”.
gsudo
( stackoverflow.com/a/58753166/97471 ). Jest to sudo dla okien z *nix sudo
doświadczeniem użytkownika: Zezwalanie na wykonanie polecenia w bieżącej konsoli i pamięć podręczna poświadczeń (tylko jedno wyskakujące okienko UAC).
Otwórz notatnik i wklej ten kod:
@echo off
powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/c cd /d %CD% && %*'"
@echo on
Następnie zapisz plik jako sudo.cmd
. Skopiuj ten plik i wklej go w miejscu C:\Windows\System32
lub dodaj ścieżkę sudo.cmd
do zmiennej środowiskowej PATH.
Po otwarciu wiersza polecenia możesz teraz uruchomić coś takiego sudo start .
.
Jeśli chcesz, aby okno wiersza polecenia administratora pozostało otwarte po uruchomieniu polecenia, zmień kod w notatniku na ten:
@echo off
powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"
@echo on
Wyjaśnienie:
powershell -Command
uruchamia polecenie PowerShell.
Start-Process
to polecenie PowerShell, które uruchamia proces, w tym przypadku wiersz polecenia.
-Verb RunAs
uruchamia polecenie jako admin.
-Argument-List
uruchamia polecenie z argumentami.
Nasze argumenty są '/c cd /d %CD% && %*'
. %*
oznacza wszystkie argumenty, więc jeśli tak sudo foo bar
, to uruchomiłoby się w wierszu poleceń, foo bar
ponieważ parametry to foo i bar, i %*
zwraca foo bar
. cd /d %CD%
to polecenie przejścia do bieżącego katalogu. Zapewni to, że po otwarciu okna z podwyższonym poziomem uprawnień katalog będzie taki sam, jak normalne okno. to &&
oznacza, że jeśli pierwsze polecenie zakończy się powodzeniem, należy uruchomić drugą komendę.
Jest /c
to parametr cmd do zamykania okna po zakończeniu polecenia, a /k
to parametr cmd do utrzymywania otwartego okna.
Kredyt dla Adama Plocher do pobytu w bieżącym Kod klasyfikacji.
C:\Windows\System32
.
powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"
echo
wiersza pierwszego i trzeciego, poprzedzając @
wiersz PowerShell?
Wszystkie odpowiedzi wyjaśniają, jak zwiększyć swoje polecenie w nowym hoście konsoli.
To, co mnie rozbawiło, to to, że żadne z tych narzędzi nie zachowuje się jak *nix sudo
, pozwalając na wykonanie polecenia wewnątrz bieżącej konsoli.
Tak więc napisałem: gsudo
Kod źródłowy https://github.com/gerardog/gsudo
Przez czerpak
scoop install gsudo
Albo przez Chocolatey
choco install gsudo
Instalacja ręczna:
Stworzyłem narzędzie CLI wsudo
o otwartym kodzie źródłowym sudo
dla systemu Windows do uruchamiania programów lub poleceń z podwyższonymi uprawnieniami, w kontekście bieżącego katalogu . Jest dostępny w opakowaniu Chocolatey .
Używam go często do rzeczy takich jak konfigurowanie agentów kompilacji, czynności administracyjne sfc /scannow
, dism /online /cleanup-image /restorehealth
lub po prostu do instalowania / aktualizowania moich lokalnych pakietów Chocolatey. Używaj na własne ryzyko.
choco install wsudo
Chocolatey musi być już zainstalowane.
wsudo
to sudo
podobne do Linuksa narzędzie dla systemu Windows do wywoływania programu z podwyższonymi uprawnieniami (jako Administrator) z wiersza poleceń powłoki innej niż administrator i utrzymywania jego bieżącego katalogu.
Ta implementacja nie zależy od starszego hosta skryptów systemu Windows ( CScript
). Zamiast tego używa pomocniczego skryptu programu PowerShell 5.1, który wywołuje polecenia "Start-Process -Wait -Verb runAs ..."
cmdlet. Twój system najprawdopodobniej ma już zainstalowany program PowerShell 5.x, w przeciwnym razie zostaniesz zaoferowany do zainstalowania go jako zależności.
wsudo
uruchamia program lub polecenie wbudowane z podwyższonymi uprawnieniami w bieżącym katalogu. Przykłady:
wsudo .\myAdminScript.bat
wsudox "del C:\Windows\Temp\*.* && pause"
wasudo cup all -y
wasudox start notepad C:\Windows\System32\drivers\etc\hosts
Aby uzyskać więcej informacji, odwiedź repro GitHub .
wasudo
że ci to ułatwiło. Sam przeważnie mieszkam w zintegrowanym terminalu konsoli VSCode, więc po prostu wasudo
tam piszę :) Następnym ulepszeniem byłoby dziedziczenie zmiennych środowiskowych .
runas
polecenie wymaga od użytkowników wpisania hasła. Jeśli nie chcesz wpisywać hasła i chcesz po prostu kliknąć okno dialogowe UAC, użyj Start-Process -Verb runas
w PowerShell zamiast runas
polecenia.
Normalnie byś tego nie zrobił, ponieważ i tak nie uruchomiłbyś go pod * nix. Wykonuj programowanie w katalogu użytkownika, a następnie wdrażaj w katalogach systemowych.
w systemie Windows możesz użyć polecenia runas. Dla użytkowników Linuksa istnieje kilka alternatyw dla sudo w systemie Windows, możesz to sprawdzić
http://helpdeskgeek.com/free-tools-review/5-windows-alternatives-linux-sudo-command/
W pewnym sensie jest. Stworzyłem Sudo dla Windows w 2007 roku? 08? Oto dokument zabezpieczający, który o tym napisałem - https://www.sans.org/reading-room/whitepapers/bestprac/sudo-windows-sudowin-1726 . Jestem całkiem pewien, że http://sudowin.sf.net nadal działa.
Możesz użyć polecenia runas - http://technet.microsoft.com/en-us/library/bb490994.aspx lub sudowin - http://sourceforge.net/projects/sudowin/
Poniższy skrypt vbs pozwala na uruchomienie danej komendy z argumentami z podniesieniem poziomu i naśladuje zachowanie oryginalnej komendy sudo unixa dla ograniczonego zbioru użytych przypadków (nie będzie buforował poświadczeń ani nie pozwala na prawdziwe wykonywanie komend z różnymi poświadczeniami). Założyłem to 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
Przykładowe użycie w wierszu polecenia sudo net start service
Myślę, że po przeprowadzeniu pewnych badań wypróbowałem poniższe kroki i udało mi się
1.Zainstaluj scoop za pomocą programu PowerShell 3 (iex (new-object net.webclient) .downloadstring (' https://get.scoop.sh ')) 2. wykonaj instalację scoop --global sudo 3. upewnij się, że ścieżki (C: \ Users \\ scoop \ shims & C: \ ProgramData \ scoop \ shims) dodane w zmiennej ścieżki środowiskowej.
W przypadku okien nie ma polecenia sudo, a także nie ma potrzeby umieszczania znaku $. Aby zainstalować Angular CLI za pomocą wiersza poleceń node.js w systemie Windows, po prostu napisałem npm install -g @ angular / cli, a następnie nacisnąłem Enter. Działało dobrze.
W Windows Powershell możesz użyć polecenia Start-Process z opcją -Verb RunAs
uruchomienia i podwyższonego poziomu procesu. Oto przykład mojej funkcji sudo:
function sudo {
Start-Process @args -verb runas
}
Np .: Otwórz plik hostów jako Administrator w notatniku
sudo notepad C:\Windows\System32\drivers\etc\hosts
Bardzo się cieszę mogąc Ci pomóc.
Aby wykonać polecenie sudo, wykonaj następujące czynności: -
Mam nadzieję, że to ci pomoże
Aby po prostu uruchomić polecenie jako administrator w Powershell bez podwyższonych uprawnień, możesz użyć Start-Process
bezpośrednio, szczególnie z odpowiednimi opcjami -Verb runas
.
Jest to o wiele bardziej zawiłe niż sudo
, zwłaszcza że nie można po prostu ponownie użyć poprzedniego polecenia z dodatkową opcją. Musisz osobno określić argumenty polecenia.
Oto przykład użycia polecenia route do zmiany bramy:
To się nie udaje, ponieważ nie jesteśmy w podwyższonym PS:
> route change 0.0.0.0 mask 0.0.0.0 192.168.1.3
The requested operation requires elevation.
Działa to po zaakceptowaniu UAC:
> Start-Process route -ArgumentList "change 0.0.0.0 mask 0.0.0.0 192.168.1.3" -Verb runas
Lub dla polecenia, które wymaga cmd.exe
:
> Start-Process cmd -ArgumentList "/c other_command arguments ..." -Verb runas