Es ist besser, die Verwendung von Terminalbefehlen in Windows zu vermeiden. Versuchen Sie stattdessen, dasselbe mit Hilfe einer IDE wie Eclipse + PyDev zu tun. Es wird die Dinge viel einfacher machen.
Pushpak Dagade
7
@Pushpak Dagade: Ihr Kommentar hat mich im Allgemeinen abgeschreckt, aber als ich dies tippte, wurde mir klar, dass dies STACK OVERFLOW ist. Dies sind die Personen, die das Terminal in Windows verwenden. =) Ich meine, PowerShell würde sonst wahrscheinlich nicht existieren.
Brent Rittenhouse
2
Was wäre, wenn er ein Skript zur Automatisierung einer Aufgabe erstellen würde? (Ja, mir ist klar, dass Sie DAS als privilegierter Benutzer ausführen können.)
Brent Rittenhouse
Probieren Sie mein wsudo aus , ein sudo-ähnliches Tool für Windows, das als Chocolatey-Paket erhältlich ist.
Noseratio
Antworten:
97
sudoIn Windows gibt es keinen Befehl. Das nächste Äquivalent ist "Als Administrator ausführen".
Sie können dies mit dem runasBefehl mit einer Administrator-Vertrauensstufe tun oder indem Sie mit der rechten Maustaste auf das Programm in der Benutzeroberfläche klicken und "Als Administrator ausführen" auswählen .
Wissen Sie, ob das Verhalten von Runas von Version zu Version unterschiedlich ist? Ich habe Win7 Enterprise installiert und alle Kombinationen, die ich mit Runas versucht habe, erstellen das neue Cmd ohne Administratorrechte
notNullGothik
4
Mit Sudo für Windows (sudowin) können autorisierte Benutzer Prozesse mit erhöhten Berechtigungen unter Verwendung ihrer eigenen Passphrase starten. Im Gegensatz zum Befehl runas behält Sudo für Windows das Benutzerprofil und den Besitz der erstellten Objekte bei. Sie können es hier bekommen: sourceforge.net/projects/sudowin
Joe Bigler
Auschecken gsudo( stackoverflow.com/a/58753166/97471 ). Es ist ein Sudo für Windows mit *nix sudoBenutzererfahrung: Ermöglichen der Ausführung des Befehls in der aktuellen Konsole und im Cache für Anmeldeinformationen (nur ein UAC-Popup).
Gerardo Grignoli
Runas ist die Erhöhung eines Benutzerkontos in Administratoren. Sudo ist eine andere Sache. Dies sollte nicht die akzeptierte Antwort sein.
Massimo
14
Öffnen Sie den Editor und fügen Sie diesen Code ein:
@echo off
powershell -Command"Start-Process cmd -Verb RunAs -ArgumentList '/c cd /d %CD% && %*'"@echo on
Speichern Sie dann die Datei als sudo.cmd. Kopieren Sie diese Datei und fügen Sie sie unter C:\Windows\System32oder fügen Sie den Pfad sudo.cmdzu Ihrer PATH-Umgebungsvariablen hinzu.
Wenn Sie die Eingabeaufforderung öffnen, können Sie jetzt so etwas wie ausführen sudo start ..
Wenn das Eingabeaufforderungsfenster des Administrators beim Ausführen des Befehls geöffnet bleiben soll, ändern Sie den Code im Editor wie folgt:
@echo off
powershell -Command"Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"@echo on
Erläuterung:
powershell -Command führt einen Powershell-Befehl aus.
Start-Process ist ein Powershell-Befehl, der einen Prozess startet, in diesem Fall die Eingabeaufforderung.
-Verb RunAs führt den Befehl als admin aus.
-Argument-List führt den Befehl mit Argumenten aus.
Unsere Argumente sind '/c cd /d %CD% && %*'. %*bedeutet alle Argumente. Wenn Sie dies tun sudo foo bar, wird es in der Eingabeaufforderung ausgeführt, foo barda die Parameter foo und bar sind, und wird %*zurückgegeben foo bar.cd /d %CD%ist ein Befehl, um zum aktuellen Verzeichnis zu wechseln. Dadurch wird sichergestellt, dass beim Öffnen des erhöhten Fensters das Verzeichnis mit dem normalen Fenster identisch ist. Dies &&bedeutet, dass Sie den zweiten Befehl ausführen, wenn der erste Befehl erfolgreich ist.
Das /c ist ein cmd Parameter zum Schließen des Fensters nach dem Befehl beendet ist , und die/k ist ein cmd Parameter für das Halten Sie das Fenster geöffnet.
Dank an Adam Plocher für den Verbleib im aktuellen Verzeichniscode.
Ein Problem dabei ist, dass Sie sich nach dem Erhöhen nicht mehr im aktuellen Ordner befinden, sondern im C:\Windows\System32.
Noseratio
2
@noseratio wahr, es scheint, dass eine Änderung dies jedoch den Trick tun wird:powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"
Adam Plocher
@AdamPlocher, das könnte funktionieren, könnte aber Probleme haben, wenn die Befehlszeile %*Anführungszeichen enthält. Deshalb habe ich wsudoPowerShell-basiert erstellt.
Noseratio
Dies ist die Erhöhung eines Benutzerkontos in Administratoren. Sudo ist eine andere Sache.
Massimo
Können Sie nicht einfach die echoZeilen eins und drei überspringen, indem Sie @der Powershell-Zeile voranstellen?
Nudl
9
Alle Antworten erklären, wie Sie Ihren Befehl in einem neuen erhöhen können Konsolenhost .
Was mich amüsierte, war, dass sich keines dieser Tools so verhält *nix sudo, dass der Befehl in der aktuellen Konsole ausgeführt werden kann.
Ich habe wsudoein Open-Source- sudoähnliches CLI-Tool für Windows erstellt, mit dem Programme oder Befehle mit erhöhtem Recht im Kontext des aktuellen Verzeichnisses ausgeführt werden können . Es ist als Schokoladenpaket erhältlich .
Ich benutze es viel für Sachen wie die Konfiguration Build - Agenten, admin Dinge wie sfc /scannow, dism /online /cleanup-image /restorehealthoder einfach für die Installation / Aktualisierung meiner lokalen Chocolatey Pakete. Benutzung auf eigene Gefahr.
wsudoist ein Linux- sudoähnliches Tool für Windows, mit dem ein Programm mit erhöhten Rechten (als Administrator) über eine Nicht-Administrator-Shell-Eingabeaufforderung aufgerufen und das aktuelle Verzeichnis beibehalten werden kann.
Diese Implementierung hängt nicht vom alten Windows Script Host ( CScript) ab. Stattdessen wird ein Hilfsskript für PowerShell 5.1 verwendet, das aufgerufen wird"Start-Process -Wait -Verb runAs ..." Hilfsskript für Cmdlet . Auf Ihrem System ist PowerShell 5.x höchstwahrscheinlich bereits installiert, andernfalls wird Ihnen angeboten, es als Abhängigkeit zu installieren.
Verwendung
wsudoführt ein Programm oder einen Inline-Befehl mit erhöhten Rechten im aktuellen Verzeichnis aus. Beispiele:
wsudo .\myAdminScript.bat
wsudox "del C:\Windows\Temp\*.* && pause"
wasudo cup all -y
wasudox start notepad C:\Windows\System32\drivers\etc\hosts
Weitere Informationen finden Sie im GitHub-Repro .
Vielen Dank für die Veröffentlichung von "wsudo", es ist sehr nützlich für mich. Ich denke, der Vorteil Ihres wsudo besteht darin, dass das Arbeitsverzeichnis nicht den Alternativen entspricht. Ich konnte nicht finden, dass man CWD außer wsudo behalten kann. Ich denke, Sie sollten diesen Punkt in der Beschreibung hervorheben. Ich schätze deine Arbeit sehr.
Benok
3
Noch eine Sache, die Sie wissen lassen sollten. Kennen Sie den Adressleisten-Hack , um die Shell direkt zu öffnen? Normalerweise benutze ich diesen Hack, aber ich war sehr frustriert, als ich mit diesem Hack eine erhöhte Shell bekommen wollte. Ich habe versucht, viele Alternativen zu finden, aber es funktioniert nicht. Ich kann endlich eine mit "wasudo [shell]" öffnen. Ich liebe es, das zu haben.
Nochmals vielen
3
@benok, das tue ich, es ist in der Tat ein praktischer Hack! Ich bin froh wasudo, dass ich es dir leichter gemacht habe. Ich selbst lebe hauptsächlich im integrierten VSCode-Konsolenterminal, also tippe ich einfach wasudodort :) Die nächste Verbesserung wäre, die Umgebungsvariablen zu erben .
Noseratio
Hallo @benok, vielleicht interessiert Sie auch mein neues Dienstprogramm zur Verbesserung der Produktivität beim Kopieren / Einfügen / Ausführen, DevComrade :)
noseratio
5
runasBefehl erfordert, dass die Benutzer Passwort eingeben. Wenn Sie kein Kennwort eingeben und nur auf das Dialogfeld "Benutzerkontensteuerung" klicken möchten, verwenden Sie Start-Process -Verb runasin PowerShell anstelle des runasBefehls.
Dies ist die Erhöhung eines Benutzerkontos in Administratoren. Sudo ist eine andere Sache.
Massimo
4
Normalerweise würden Sie dies nicht tun, da Sie es unabhängig davon nicht unter * nix ausführen würden. Führen Sie die Entwicklung in einem Benutzerverzeichnis durch und stellen Sie sie anschließend in Systemverzeichnissen bereit.
Das folgende vbs-Skript ermöglicht das Starten eines bestimmten Befehls mit Argumenten mit Elevation und ahmt das Verhalten des ursprünglichen Unix-Sudo-Befehls für eine begrenzte Anzahl verwendeter Fälle nach (es werden weder Anmeldeinformationen zwischengespeichert noch Befehle mit unterschiedlichen Anmeldeinformationen wirklich ausgeführt). Ich ziehe es an C:\Windows\System32.
Wie können wir das Skript auf Benutzereingaben warten lassen, damit wir die Ausgabe des Shell-Programms lesen können?
Ahmad Hajjar
1
Du meinst interaktiven Shell-Befehl? Nun, Sie sollten zuerst versuchen, sicherzustellen, dass der gestartete Befehl auf die Rückkehr gewartet wird. Hier scheint es möglich zu sein. Dann sollten Sie die Ausgabe von den Shell-Objekten erhalten und ausgeben, was meiner Meinung nach auch möglich ist. Erwarten Sie jedoch nicht, dass alles möglich ist, was Sie unter Unix tun können.
Ceztko
Unter Windows 10 wird in Zeile 1 Zeichen 6 ein Syntaxfehler ausgegeben.
Martin Braun
Dies ist die Erhöhung eines Benutzerkontos in Administratoren. Sudo ist eine andere Sache.
Massimo
1
Ich glaube, ich habe nach einigen Recherchen die folgenden Schritte ausprobiert und war erfolgreich
1.Installieren Sie scoop mit Powershell 3 (iex (neues Objekt net.webclient) .downloadstring (' https://get.scoop.sh ')). 2. Installieren Sie scoop --global sudo. 3. Stellen Sie sicher, dass die Pfade (C: \ Users \\ scoop \ shims & C: \ ProgramData \ scoop \ shims) in Umgebungspfadvariable hinzugefügt.
Bei Windows gibt es keinen sudo-Befehl und es ist auch nicht erforderlich, $ einzugeben. Für die Installation von Angular CLI über die Eingabeaufforderung node.js in Windows habe ich einfach npm install -g @ angle / cli geschrieben und dann die Eingabetaste gedrückt. Es hat gut funktioniert.
Öffnen Sie die Konsole als Administrator. Klicken Sie mit der rechten Maustaste auf die Eingabeaufforderung oder Bash -> more und wählen Sie "Als Administrator ausführen".
In Windows Powershell können Sie den Befehl Start-Process mit der Option -Verb RunAszum Starten und Erhöhen des Prozesses verwenden. Hier ist mein Beispiel für eine Sudo-Funktion:
function sudo {
Start-Process @args -verb runas
}
Beispiel: Öffnen Sie die Hosts-Datei als Admin im Editor
Diese Antwort sollte den Text der Batch-Datei enthalten und nicht von einem Link außerhalb der Site aufgrund von Link Rot abhängen. Die Antwort sollte auch den Haftungsausschluss enthalten, dass dieses Skript versucht, das grobe Verhalten von sudo zu emulieren, aber nicht wirklich sudo ist (es ist ein Pseudo-sudo).
Asky
0
Um einen Befehl nur als Administrator in einer nicht erhöhten Powershell auszuführen, können Sie ihn Start-Processdirekt verwenden, insbesondere mit den richtigen Optionen -Verb runas.
Es ist viel komplizierter als sudo, insbesondere weil Sie den vorherigen Befehl nicht einfach mit einer zusätzlichen Option wiederverwenden können. Sie müssen die Argumente für Ihren Befehl separat angeben.
Hier ist ein Beispiel für die Verwendung des Befehls route zum Ändern des Gateways:
Dies schlägt fehl, weil wir uns nicht in einem erhöhten PS befinden:
Antworten:
sudo
In Windows gibt es keinen Befehl. Das nächste Äquivalent ist "Als Administrator ausführen".Sie können dies mit dem
runas
Befehl mit einer Administrator-Vertrauensstufe tun oder indem Sie mit der rechten Maustaste auf das Programm in der Benutzeroberfläche klicken und "Als Administrator ausführen" auswählen .quelle
gsudo
( stackoverflow.com/a/58753166/97471 ). Es ist ein Sudo für Windows mit*nix sudo
Benutzererfahrung: Ermöglichen der Ausführung des Befehls in der aktuellen Konsole und im Cache für Anmeldeinformationen (nur ein UAC-Popup).Öffnen Sie den Editor und fügen Sie diesen Code ein:
Speichern Sie dann die Datei als
sudo.cmd
. Kopieren Sie diese Datei und fügen Sie sie unterC:\Windows\System32
oder fügen Sie den Pfadsudo.cmd
zu Ihrer PATH-Umgebungsvariablen hinzu.Wenn Sie die Eingabeaufforderung öffnen, können Sie jetzt so etwas wie ausführen
sudo start .
.Wenn das Eingabeaufforderungsfenster des Administrators beim Ausführen des Befehls geöffnet bleiben soll, ändern Sie den Code im Editor wie folgt:
Erläuterung:
powershell -Command
führt einen Powershell-Befehl aus.Start-Process
ist ein Powershell-Befehl, der einen Prozess startet, in diesem Fall die Eingabeaufforderung.-Verb RunAs
führt den Befehl als admin aus.-Argument-List
führt den Befehl mit Argumenten aus.Unsere Argumente sind
'/c cd /d %CD% && %*'
.%*
bedeutet alle Argumente. Wenn Sie dies tunsudo foo bar
, wird es in der Eingabeaufforderung ausgeführt,foo bar
da die Parameter foo und bar sind, und wird%*
zurückgegebenfoo bar
.cd /d %CD%
ist ein Befehl, um zum aktuellen Verzeichnis zu wechseln. Dadurch wird sichergestellt, dass beim Öffnen des erhöhten Fensters das Verzeichnis mit dem normalen Fenster identisch ist. Dies&&
bedeutet, dass Sie den zweiten Befehl ausführen, wenn der erste Befehl erfolgreich ist.Das
/c
ist ein cmd Parameter zum Schließen des Fensters nach dem Befehl beendet ist , und die/k
ist ein cmd Parameter für das Halten Sie das Fenster geöffnet.Dank an Adam Plocher für den Verbleib im aktuellen Verzeichniscode.
quelle
C:\Windows\System32
.powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"
%*
Anführungszeichen enthält. Deshalb habe ichwsudo
PowerShell-basiert erstellt.echo
Zeilen eins und drei überspringen, indem Sie@
der Powershell-Zeile voranstellen?Alle Antworten erklären, wie Sie Ihren Befehl in einem neuen erhöhen können Konsolenhost .
Was mich amüsierte, war, dass sich keines dieser Tools so verhält
*nix sudo
, dass der Befehl in der aktuellen Konsole ausgeführt werden kann.Also schrieb ich: gsudo
Quellcode https://github.com/gerardog/gsudo
Installation
Über Schaufel
Oder über Chocolatey
Manuelle Installation:
Demo
quelle
Ich habe
wsudo
ein Open-Source-sudo
ähnliches CLI-Tool für Windows erstellt, mit dem Programme oder Befehle mit erhöhtem Recht im Kontext des aktuellen Verzeichnisses ausgeführt werden können . Es ist als Schokoladenpaket erhältlich .Ich benutze es viel für Sachen wie die Konfiguration Build - Agenten, admin Dinge wie
sfc /scannow
,dism /online /cleanup-image /restorehealth
oder einfach für die Installation / Aktualisierung meiner lokalen Chocolatey Pakete. Benutzung auf eigene Gefahr.Installation
Chocolatey muss bereits installiert sein.
Zweck
wsudo
ist ein Linux-sudo
ähnliches Tool für Windows, mit dem ein Programm mit erhöhten Rechten (als Administrator) über eine Nicht-Administrator-Shell-Eingabeaufforderung aufgerufen und das aktuelle Verzeichnis beibehalten werden kann.Diese Implementierung hängt nicht vom alten Windows Script Host (
CScript
) ab. Stattdessen wird ein Hilfsskript für PowerShell 5.1 verwendet, das aufgerufen wird"Start-Process -Wait -Verb runAs ..."
Hilfsskript für Cmdlet . Auf Ihrem System ist PowerShell 5.x höchstwahrscheinlich bereits installiert, andernfalls wird Ihnen angeboten, es als Abhängigkeit zu installieren.Verwendung
wsudo
führt ein Programm oder einen Inline-Befehl mit erhöhten Rechten im aktuellen Verzeichnis aus. Beispiele:Weitere Informationen finden Sie im GitHub-Repro .
quelle
wasudo
, dass ich es dir leichter gemacht habe. Ich selbst lebe hauptsächlich im integrierten VSCode-Konsolenterminal, also tippe ich einfachwasudo
dort :) Die nächste Verbesserung wäre, die Umgebungsvariablen zu erben .runas
Befehl erfordert, dass die Benutzer Passwort eingeben. Wenn Sie kein Kennwort eingeben und nur auf das Dialogfeld "Benutzerkontensteuerung" klicken möchten, verwenden SieStart-Process -Verb runas
in PowerShell anstelle desrunas
Befehls.Siehe: http://satob.hatenablog.com/entry/2017/06/17/013217
quelle
Normalerweise würden Sie dies nicht tun, da Sie es unabhängig davon nicht unter * nix ausführen würden. Führen Sie die Entwicklung in einem Benutzerverzeichnis durch und stellen Sie sie anschließend in Systemverzeichnissen bereit.
quelle
Unter Windows können Sie den Befehl runas verwenden. Für Linux-Benutzer gibt es einige Alternativen für sudo in Windows. Sie können dies überprüfen
http://helpdeskgeek.com/free-tools-review/5-windows-alternatives-linux-sudo-command/
quelle
Sie können den Befehl runas verwenden - http://technet.microsoft.com/en-us/library/bb490994.aspx oder sudowin - http://sourceforge.net/projects/sudowin/
quelle
Da ist irgendwie. Ich habe Sudo für Windows 2007 erstellt. 08? Hier ist das Sicherheitspapier, das ich darüber geschrieben habe - https://www.sans.org/reading-room/whitepapers/bestprac/sudo-windows-sudowin-1726 . Ziemlich sicher, dass http://sudowin.sf.net auch noch funktioniert.
quelle
Das folgende vbs-Skript ermöglicht das Starten eines bestimmten Befehls mit Argumenten mit Elevation und ahmt das Verhalten des ursprünglichen Unix-Sudo-Befehls für eine begrenzte Anzahl verwendeter Fälle nach (es werden weder Anmeldeinformationen zwischengespeichert noch Befehle mit unterschiedlichen Anmeldeinformationen wirklich ausgeführt). Ich ziehe es an
C:\Windows\System32
.Beispiel für die Verwendung an einer Eingabeaufforderung
sudo net start service
quelle
Ich glaube, ich habe nach einigen Recherchen die folgenden Schritte ausprobiert und war erfolgreich
1.Installieren Sie scoop mit Powershell 3 (iex (neues Objekt net.webclient) .downloadstring (' https://get.scoop.sh ')). 2. Installieren Sie scoop --global sudo. 3. Stellen Sie sicher, dass die Pfade (C: \ Users \\ scoop \ shims & C: \ ProgramData \ scoop \ shims) in Umgebungspfadvariable hinzugefügt.
quelle
Bei Windows gibt es keinen sudo-Befehl und es ist auch nicht erforderlich, $ einzugeben. Für die Installation von Angular CLI über die Eingabeaufforderung node.js in Windows habe ich einfach npm install -g @ angle / cli geschrieben und dann die Eingabetaste gedrückt. Es hat gut funktioniert.
quelle
Öffnen Sie die Konsole als Administrator. Klicken Sie mit der rechten Maustaste auf die Eingabeaufforderung oder Bash -> more und wählen Sie "Als Administrator ausführen".
quelle
In Windows Powershell können Sie den Befehl Start-Process mit der Option
-Verb RunAs
zum Starten und Erhöhen des Prozesses verwenden. Hier ist mein Beispiel für eine Sudo-Funktion:Beispiel: Öffnen Sie die Hosts-Datei als Admin im Editor
quelle
Verwendung der
sudo
Befehl für Fensterbenutzer verwenden, erhalten Sie die folgenden Vorschläge:Installieren Sie zunächst das
scoop
Paketverwaltungstool und führen Sie die folgenden Befehle aus:Verwenden Sie dann
scoop
, um densudo
Befehl zu installieren :Schließlich können Sie den Befehl ausführen mit
sudo
:quelle
Ich bin froh dir zu helfen.
Gehen Sie folgendermaßen vor, um einen Sudo-Befehl auszuführen: -
https://gist.github.com/coder-examples/5ca6c141d6d356ddba4e356d63fb2c13
Hoffe das wird dir helfen
quelle
Um einen Befehl nur als Administrator in einer nicht erhöhten Powershell auszuführen, können Sie ihn
Start-Process
direkt verwenden, insbesondere mit den richtigen Optionen-Verb runas
.Es ist viel komplizierter als
sudo
, insbesondere weil Sie den vorherigen Befehl nicht einfach mit einer zusätzlichen Option wiederverwenden können. Sie müssen die Argumente für Ihren Befehl separat angeben.Hier ist ein Beispiel für die Verwendung des Befehls route zum Ändern des Gateways:
Dies schlägt fehl, weil wir uns nicht in einem erhöhten PS befinden:
Dies funktioniert nach dem Akzeptieren der Benutzerkontensteuerung:
Oder für einen Befehl, der Folgendes erfordert
cmd.exe
:quelle