Come dovrei eseguire il seguente comando in Windows:
$ sudo django-admin.py startproject NEW
?
Come dovrei eseguire il seguente comando in Windows:
$ sudo django-admin.py startproject NEW
?
Risposte:
Non è presente alcun sudo
comando in Windows. L'equivalente più vicino è "esegui come amministratore".
Puoi farlo utilizzando il runas
comando con un livello di attendibilità amministratore o facendo clic con il pulsante destro del mouse sul programma nell'interfaccia utente e scegliendo "Esegui come amministratore".
gsudo
( stackoverflow.com/a/58753166/97471 ). È un sudo per Windows con *nix sudo
esperienza utente: consente di eseguire il comando all'interno della console corrente e cache delle credenziali (solo un popup UAC).
Apri il blocco note e incolla questo codice:
@echo off
powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/c cd /d %CD% && %*'"
@echo on
Quindi, salva il file come sudo.cmd
. Copia questo file e incollalo C:\Windows\System32
o aggiungi il percorso in cui si sudo.cmd
trova alla variabile d'ambiente PATH.
Quando apri il prompt dei comandi, ora puoi eseguire qualcosa di simile sudo start .
.
Se desideri che la finestra del prompt dei comandi dell'amministratore rimanga aperta quando esegui il comando, modifica il codice nel blocco note in questo:
@echo off
powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"
@echo on
Spiegazione:
powershell -Command
esegue un comando PowerShell.
Start-Process
è un comando PowerShell che avvia un processo, in questo caso il prompt dei comandi.
-Verb RunAs
esegue il comando come amministratore.
-Argument-List
esegue il comando con argomenti.
I nostri argomenti sono '/c cd /d %CD% && %*'
. %*
significa tutti gli argomenti, quindi se lo facessi sudo foo bar
, verrebbe eseguito nel prompt dei comandi foo bar
perché i parametri sono foo e bar e %*
restituisce foo bar
. cd /d %CD%
è un comando per andare alla directory corrente. Ciò assicurerà che quando apri la finestra elevata, la directory sarà la stessa della finestra normale. il &&
che significa che se il primo comando ha esito positivo, eseguire il secondo comando.
La /c
è un parametro cmd per chiudere la finestra dopo il comando è terminato, e la /k
è un parametro cmd per mantenere la finestra aperta.
Ringraziamo Adam Plocher per la permanenza nel codice della directory corrente.
C:\Windows\System32
.
powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"
echo
righe uno e tre anteponendo @
la riga PowerShell?
Tutte le risposte spiegano come elevare il tuo comando in un nuovo host della console.
Quello che mi ha divertito è stato il fatto che nessuno di questi strumenti si comporta come se fosse *nix sudo
possibile eseguire il comando all'interno della console corrente .
Quindi ho scritto: gsudo
Codice sorgente https://github.com/gerardog/gsudo
Via scoop
scoop install gsudo
O tramite Chocolatey
choco install gsudo
Installazione manuale:
Ho creato wsudo
un open-sourcesudo
strumento CLI di tipo per Windows per eseguire programmi o comandi con elevato diritto, nel contesto della directory corrente . È disponibile come confezione Chocolatey .
Io lo uso molto per cose come la configurazione di agenti di build, cose di amministrazione come sfc /scannow
, dism /online /cleanup-image /restorehealth
o semplicemente per l'installazione / aggiornamento dei miei pacchetti cioccolatoso locali. Utilizzare a proprio rischio.
choco install wsudo
Chocolatey deve essere già installato.
wsudo
è un Linux sudo
strumento simile a per Windows per invocare un programma con diritti elevati (come amministratore) da un prompt dei comandi della shell non amministratore e mantenere la sua directory corrente.
Questa implementazione non dipende dal precedente Windows Script Host (CScript
). Invece, usa uno script di PowerShell 5.1 di supporto che richiama il "Start-Process -Wait -Verb runAs ..."
cmdlet. Molto probabilmente sul tuo sistema è già installato PowerShell 5.x, altrimenti ti verrà offerto di installarlo come dipendenza.
wsudo
esegue un programma o un comando inline con diritti elevati nella directory corrente. Esempi:
wsudo .\myAdminScript.bat
wsudox "del C:\Windows\Temp\*.* && pause"
wasudo cup all -y
wasudox start notepad C:\Windows\System32\drivers\etc\hosts
Per maggiori dettagli, visita la riproduzione di GitHub .
wasudo
che ti sia stato più facile. Io stesso vivo per lo più nel terminale della console integrata VSCode, quindi digito wasudo
lì :) Il prossimo miglioramento sarebbe ereditare le variabili di ambiente .
runas
Il comando richiede agli utenti di digitare la password. Se non vuoi digitare la password e vuoi semplicemente fare clic sulla finestra di dialogo UAC, usa Start-Process -Verb runas
in PowerShell invece dirunas
comando.
Normalmente non lo faresti, dal momento che non lo eseguiresti sotto * nix a prescindere. Eseguire lo sviluppo in una directory utente e distribuirlo successivamente nelle directory di sistema.
in Windows, puoi usare il comando runas. Per gli utenti Linux, ci sono alcune alternative per sudo in Windows, puoi verificarlo
http://helpdeskgeek.com/free-tools-review/5-windows-alternatives-linux-sudo-command/
È possibile utilizzare il comando runas - http://technet.microsoft.com/en-us/library/bb490994.aspx o sudowin - http://sourceforge.net/projects/sudowin/
C'è un po '. Ho creato Sudo per Windows nel 2007? 08? Ecco il documento sulla sicurezza che ho scritto a riguardo: https://www.sans.org/reading-room/whitepapers/bestprac/sudo-windows-sudowin-1726 . Abbastanza sicuro che anche http://sudowin.sf.net funzioni ancora.
Il seguente script vbs consente di avviare un determinato comando con argomenti con elevazione e imita il comportamento del comando sudo originale unix per un insieme limitato di casi utilizzati (non memorizzerà le credenziali né consentirà di eseguire veramente comandi con credenziali diverse). L'ho indossato 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
Esempio di utilizzo su un prompt dei comandi sudo net start service
Penso di aver provato i passaggi seguenti dopo aver fatto alcune ricerche e ci sono riuscito
1.Installa scoop usando powershell 3 (iex (new-object net.webclient) .downloadstring (' https://get.scoop.sh ')) 2. esegui scoop install --global sudo 3. assicurati che i percorsi (C: \ Users \\ scoop \ shims & C: \ ProgramData \ scoop \ shims) aggiunti nella variabile del percorso ambientale.
Non esiste un comando sudo in caso di Windows e inoltre non è necessario inserire $. Per installare Angular CLI tramite il prompt dei comandi node.js in Windows, ho appena scritto npm install -g @ angular / cli e poi ho premuto Invio. Ha funzionato bene.
In Windows Powershell è possibile utilizzare il comando Start-Process con l'opzione -Verb RunAs
per avviare e il processo elevato. Ecco il mio esempio di funzione sudo:
function sudo {
Start-Process @args -verb runas
}
Es: Apri il file hosts come amministratore nel blocco note
sudo notepad C:\Windows\System32\drivers\etc\hosts
Sono felice di aiutarti.
Per eseguire un comando sudo segui i passaggi: -
Spero che questo ti possa aiutare
Per eseguire semplicemente un comando come amministratore in un Powershell non elevato, puoi utilizzare Start-Process
direttamente, con le opzioni giuste, in particolare -Verb runas
.
È molto più complicato di sudo
, soprattutto perché non puoi semplicemente riutilizzare il comando precedente con un'opzione aggiuntiva. È necessario specificare separatamente gli argomenti del comando.
Ecco un esempio, utilizzando il comando route per modificare il gateway:
Questo fallisce perché non siamo in un PS elevato:
> route change 0.0.0.0 mask 0.0.0.0 192.168.1.3
The requested operation requires elevation.
Funziona dopo aver accettato l'UAC:
> Start-Process route -ArgumentList "change 0.0.0.0 mask 0.0.0.0 192.168.1.3" -Verb runas
O per un comando che richiede cmd.exe
:
> Start-Process cmd -ArgumentList "/c other_command arguments ..." -Verb runas