Lebih baik menghindari penggunaan perintah terminal di Windows. Sebagai gantinya, coba lakukan hal yang sama dengan bantuan IDE, seperti Eclipse + PyDev. Ini akan membuat segalanya lebih sederhana.
Pushpak Dagade
8
@ Pushpak Dagade: Saya tidak setuju dengan komentar Anda, secara umum, tetapi ketika saya mulai mengetik ini saya menyadari ini adalah STACK OVERFLOW. Ini adalah orang-orang yang DO menggunakan terminal di Windows. =) Maksud saya, PowerShell kemungkinan besar tidak akan ada jika tidak.
Brent Rittenhouse
2
Juga, bagaimana jika dia membuat skrip untuk mengotomatiskan tugas? (Ya, saya menyadari Anda dapat menjalankan ITU sebagai pengguna priviledged.)
Brent Rittenhouse
Coba wsudo saya , alat mirip sudo untuk Windows yang tersedia sebagai paket Chocolatey.
noseratio
Jawaban:
102
Tidak ada sudoperintah di Windows. Padanan terdekat adalah "jalankan sebagai administrator."
Anda dapat melakukan ini menggunakan runasperintah dengan tingkat kepercayaan administrator, atau dengan mengklik kanan program di UI dan memilih "jalankan sebagai administrator".
Apakah Anda tahu jika perilaku runas bervariasi dari versi ke versi? Saya telah menginstal perusahaan Win7 dan semua kombinasi yang telah saya coba dengan runas membuat cmd baru tanpa hak admin
notNullGothik
4
Sudo untuk Windows (sudowin) memungkinkan pengguna yang berwenang untuk meluncurkan proses dengan hak istimewa yang lebih tinggi menggunakan frasa sandi mereka sendiri. Tidak seperti perintah runas, Sudo untuk Windows mempertahankan profil pengguna dan kepemilikan objek yang dibuat. Anda bisa mendapatkannya di sini: sourceforge.net/projects/sudowin
Joe Bigler
Lihat gsudo( stackoverflow.com/a/58753166/97471 ). Ini adalah sudo untuk windows dengan *nix sudopengalaman pengguna: Mengizinkan untuk menjalankan perintah di dalam konsol saat ini, dan cache kredensial (hanya satu popup UAC).
Gerardo Grignoli
runas adalah elevasi akun pengguna di Administrator; sudo adalah hal lain. Ini seharusnya bukan jawaban yang diterima.
Massimo
16
Buka notepad dan tempel kode ini:
@echo off
powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/c cd /d %CD% && %*'"
@echo on
Kemudian, simpan file sebagai sudo.cmd. Salin file ini dan tempel di C:\Windows\System32atau tambahkan jalur sudo.cmdke Variabel Lingkungan PATH Anda.
Saat Anda membuka command prompt, Anda sekarang dapat menjalankan sesuatu seperti sudo start ..
Jika Anda ingin jendela prompt perintah admin tetap terbuka saat Anda menjalankan perintah, ubah kode di notepad menjadi ini:
@echo off
powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"
@echo on
Start-Process adalah perintah PowerShell yang memulai proses, dalam hal ini, command prompt.
-Verb RunAs menjalankan perintah sebagai admin.
-Argument-List menjalankan perintah dengan argumen.
Argumen kami adalah '/c cd /d %CD% && %*'. %*berarti semua argumen, jadi jika Anda melakukannya sudo foo bar, itu akan berjalan di command prompt foo barkarena parameternya adalah foo dan bar, dan %*kembali foo bar. cd /d %CD%adalah perintah untuk membuka direktori saat ini. Ini akan memastikan bahwa ketika Anda membuka jendela yang ditinggikan, direktori akan sama dengan jendela normal. yang &&berarti bahwa jika perintah pertama berhasil, jalankan perintah kedua.
The /cadalah parameter cmd untuk menutup jendela setelah perintah selesai, dan /kmerupakan parameter cmd untuk menjaga jendela yang terbuka.
Kredit untuk Adam Plocher untuk tinggal dalam kode direktori saat ini.
Satu masalah dengan itu adalah sekali ditinggikan, Anda tidak lagi berada di folder saat ini, melainkan di C:\Windows\System32.
noseratio
2
@noseratio benar, tampaknya mengubahnya menjadi ini akan berhasil, namun:powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"
Adam Plocher
@AdamPlocher, itu mungkin berfungsi tetapi dapat mengalami masalah jika baris perintah %*memiliki tanda kutip. Itulah mengapa saya membuat wsudo, berbasis PowerShell.
noseratio
Ini adalah peningkatan dari akun pengguna di Administrator; sudo adalah hal lain.
Massimo
Bisakah Anda melewati echogaris satu dan tiga dengan melakukan prepending @ke garis PowerShell?
nudl
14
Semua jawaban menjelaskan cara meningkatkan perintah Anda di host konsol baru .
Yang membuat saya terhibur adalah tidak ada alat yang berperilaku seperti itu *nix sudo, memungkinkan untuk menjalankan perintah di dalam konsol saat ini .
Saya telah membuat wsudo, sudoalat CLI seperti open-source untuk Windows untuk menjalankan program atau perintah dengan hak yang ditinggikan, dalam konteks direktori saat ini . Ini tersedia sebagai paket Chocolatey .
Saya sering menggunakannya untuk hal-hal seperti mengonfigurasi agen pembuat, hal-hal admin seperti sfc /scannow, dism /online /cleanup-image /restorehealthatau hanya untuk menginstal / memperbarui paket Chocolatey lokal saya. Gunakan dengan resiko Anda sendiri.
wsudoadalah sudoalat mirip Linux untuk Windows untuk menjalankan program dengan hak yang lebih tinggi (sebagai Administrator) dari prompt perintah shell non-admin dan mempertahankan direktori saat ini.
Implementasi ini tidak bergantung pada Windows Script Host ( CScript) lama. Sebaliknya, ia menggunakan skrip PowerShell 5.1 pembantu yang memanggil "Start-Process -Wait -Verb runAs ..."cmdlet. Sistem Anda kemungkinan besar sudah menginstal PowerShell 5.x, jika tidak, Anda akan ditawarkan untuk menginstalnya sebagai dependensi.
Pemakaian
wsudomenjalankan program atau perintah inline dengan hak tinggi di direktori saat ini. Contoh:
wsudo .\myAdminScript.bat
wsudox "del C:\Windows\Temp\*.* && pause"
wasudo cup all -y
wasudox start notepad C:\Windows\System32\drivers\etc\hosts
Terima kasih sudah menerbitkan "wsudo", cukup berguna buat saya. Saya pikir keuntungan wsudo Anda adalah menjaga direktori kerja tidak seperti alternatifnya. Saya tidak dapat menemukan seseorang dapat menyimpan CWD selain wsudo. Saya pikir Anda harus menekankan poin ini dalam deskripsi. Saya sangat menghargai pekerjaan Anda.
benok
3
Satu hal lagi yang perlu Anda ketahui. Apakah Anda tahu alamat bar hack untuk membuka shell secara langsung? Saya biasanya menggunakan peretasan ini, tetapi saya sangat frustrasi ketika saya ingin mendapatkan shell yang tinggi dengan peretasan ini. Saya mencoba mencari banyak alternatif tetapi tidak berhasil. Saya akhirnya bisa membukanya dengan "wasudo [shell]". Saya senang memiliki ini. Sekali lagi terima kasih :-)
benok
3
@benok, benar, ini memang peretasan yang berguna! Senang wasudomembuatnya lebih mudah untuk Anda. Saya sendiri kebanyakan tinggal di terminal konsol terintegrasi VSCode, jadi saya hanya mengetik di wasudosana :) Perbaikan berikutnya akan mewarisi lingkungan vars .
noseratio
Hai @benok, Anda mungkin juga tertarik dengan utilitas baru saya untuk meningkatkan produktivitas salin / tempel / jalankan, DevComrade :)
noseratio
5
runasPerintah mengharuskan pengguna untuk mengetikkan kata sandi. Jika Anda tidak ingin mengetikkan kata sandi dan hanya ingin mengklik dialog UAC, gunakan Start-Process -Verb runasdi PowerShell sebagai ganti runasperintah.
Ini adalah peningkatan dari akun pengguna di Administrator; sudo adalah hal lain.
Massimo
4
Anda biasanya tidak akan melakukannya, karena Anda tidak akan menjalankannya di bawah * nix. Lakukan pengembangan di direktori pengguna, dan terapkan setelahnya ke direktori sistem.
Ini adalah peningkatan dari akun pengguna di Administrator; sudo adalah hal lain.
Massimo
2
Skrip vbs berikut memungkinkan untuk meluncurkan perintah yang diberikan dengan argumen dengan elevasi dan meniru perilaku perintah sudo unix asli untuk sekumpulan kasus bekas yang terbatas (tidak akan menyimpan kredensial atau memungkinkan untuk benar-benar mengeksekusi perintah dengan kredensial berbeda). Saya memakainya C:\Windows\System32.
bagaimana kita bisa membuat skrip menunggu input pengguna, sehingga kita dapat membaca output dari program shell?
Ahmad Hajjar
1
Maksud Anda perintah shell interaktif? Nah, Anda harus terlebih dahulu mencoba memastikan perintah yang diluncurkan akan menunggu kembali. Di sini sepertinya itu mungkin. Maka Anda harus mendapatkan output dari objek shell dan mengeluarkannya, yang saya rasa itu juga mungkin. Jangan berharap semua yang dapat Anda lakukan di unix akan mungkin terjadi.
ceztko
Pada windows 10 itu melempar kesalahan sintaks pada baris 1 karakter 6.
Martin Braun
Ini adalah peningkatan dari akun pengguna di Administrator; sudo adalah hal lain.
Massimo
1
Saya rasa saya mencoba langkah-langkah di bawah ini setelah melakukan penelitian & berhasil
1. Instal scoop menggunakan PowerShell 3 (iex (new-object net.webclient) .downloadstring (' https://get.scoop.sh ')) 2. lakukan scoop install --global sudo 3. pastikan jalur (C: \ Users \\ scoop \ shims & C: \ ProgramData \ scoop \ shims) ditambahkan dalam variabel jalur lingkungan.
Tidak ada perintah sudo dalam kasus windows dan juga tidak perlu memasukkan $. Untuk menginstal Angular CLI melalui command prompt node.js di windows, saya hanya menulis npm install -g @ angular / cli lalu tekan Enter. Ini bekerja dengan baik.
Di Windows Powershell Anda dapat menggunakan perintah Mulai-Proses dengan opsi -Verb RunAsuntuk memulai dan meningkatkan proses. Berikut adalah contoh fungsi sudo saya:
Jawaban ini harus menyertakan teks dari file batch, tidak bergantung pada link di luar situs karena link membusuk. Juga jawabannya harus menyertakan penafian bahwa skrip ini berusaha meniru perilaku kasar sudo, tetapi tidak benar-benar sudo (ini adalah sudo-semu).
asky
0
Untuk menjalankan perintah sebagai admin di Powershell yang tidak ditinggikan, Anda dapat menggunakan Start-Processsecara langsung, dengan opsi yang tepat, khususnya -Verb runas.
Ini jauh lebih berbelit-belit daripada sudo, terutama karena Anda tidak bisa hanya menggunakan kembali perintah sebelumnya dengan opsi tambahan. Anda perlu menentukan argumen untuk perintah Anda secara terpisah.
Berikut adalah contoh, menggunakan perintah rute untuk mengubah gateway:
Ini gagal karena kami tidak berada dalam PS yang ditinggikan:
Jawaban:
Tidak ada
sudo
perintah di Windows. Padanan terdekat adalah "jalankan sebagai administrator."Anda dapat melakukan ini menggunakan
runas
perintah dengan tingkat kepercayaan administrator, atau dengan mengklik kanan program di UI dan memilih "jalankan sebagai administrator".sumber
gsudo
( stackoverflow.com/a/58753166/97471 ). Ini adalah sudo untuk windows dengan*nix sudo
pengalaman pengguna: Mengizinkan untuk menjalankan perintah di dalam konsol saat ini, dan cache kredensial (hanya satu popup UAC).Buka notepad dan tempel kode ini:
@echo off powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/c cd /d %CD% && %*'" @echo on
Kemudian, simpan file sebagai
sudo.cmd
. Salin file ini dan tempel diC:\Windows\System32
atau tambahkan jalursudo.cmd
ke Variabel Lingkungan PATH Anda.Saat Anda membuka command prompt, Anda sekarang dapat menjalankan sesuatu seperti
sudo start .
.Jika Anda ingin jendela prompt perintah admin tetap terbuka saat Anda menjalankan perintah, ubah kode di notepad menjadi ini:
@echo off powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'" @echo on
Penjelasan:
powershell -Command
menjalankan perintah PowerShell.Start-Process
adalah perintah PowerShell yang memulai proses, dalam hal ini, command prompt.-Verb RunAs
menjalankan perintah sebagai admin.-Argument-List
menjalankan perintah dengan argumen.Argumen kami adalah
'/c cd /d %CD% && %*'
.%*
berarti semua argumen, jadi jika Anda melakukannyasudo foo bar
, itu akan berjalan di command promptfoo bar
karena parameternya adalah foo dan bar, dan%*
kembalifoo bar
.cd /d %CD%
adalah perintah untuk membuka direktori saat ini. Ini akan memastikan bahwa ketika Anda membuka jendela yang ditinggikan, direktori akan sama dengan jendela normal. yang&&
berarti bahwa jika perintah pertama berhasil, jalankan perintah kedua.The
/c
adalah parameter cmd untuk menutup jendela setelah perintah selesai, dan/k
merupakan parameter cmd untuk menjaga jendela yang terbuka.Kredit untuk Adam Plocher untuk tinggal dalam kode direktori saat ini.
sumber
C:\Windows\System32
.powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"
%*
memiliki tanda kutip. Itulah mengapa saya membuatwsudo
, berbasis PowerShell.echo
garis satu dan tiga dengan melakukan prepending@
ke garis PowerShell?Semua jawaban menjelaskan cara meningkatkan perintah Anda di host konsol baru .
Yang membuat saya terhibur adalah tidak ada alat yang berperilaku seperti itu
*nix sudo
, memungkinkan untuk menjalankan perintah di dalam konsol saat ini .Jadi, saya menulis: gsudo
Kode Sumber https://github.com/gerardog/gsudo
Instalasi
Melalui sendok
Atau melalui Chocolatey
Penginstalan manual:
Demo
sumber
Saya telah membuat
wsudo
,sudo
alat CLI seperti open-source untuk Windows untuk menjalankan program atau perintah dengan hak yang ditinggikan, dalam konteks direktori saat ini . Ini tersedia sebagai paket Chocolatey .Saya sering menggunakannya untuk hal-hal seperti mengonfigurasi agen pembuat, hal-hal admin seperti
sfc /scannow
,dism /online /cleanup-image /restorehealth
atau hanya untuk menginstal / memperbarui paket Chocolatey lokal saya. Gunakan dengan resiko Anda sendiri.Instalasi
Chocolatey harus sudah terpasang.
Tujuan
wsudo
adalahsudo
alat mirip Linux untuk Windows untuk menjalankan program dengan hak yang lebih tinggi (sebagai Administrator) dari prompt perintah shell non-admin dan mempertahankan direktori saat ini.Implementasi ini tidak bergantung pada Windows Script Host (
CScript
) lama. Sebaliknya, ia menggunakan skrip PowerShell 5.1 pembantu yang memanggil"Start-Process -Wait -Verb runAs ..."
cmdlet. Sistem Anda kemungkinan besar sudah menginstal PowerShell 5.x, jika tidak, Anda akan ditawarkan untuk menginstalnya sebagai dependensi.Pemakaian
wsudo
menjalankan program atau perintah inline dengan hak tinggi di direktori saat ini. Contoh:Untuk lebih jelasnya, kunjungi repro GitHub .
sumber
wasudo
membuatnya lebih mudah untuk Anda. Saya sendiri kebanyakan tinggal di terminal konsol terintegrasi VSCode, jadi saya hanya mengetik diwasudo
sana :) Perbaikan berikutnya akan mewarisi lingkungan vars .runas
Perintah mengharuskan pengguna untuk mengetikkan kata sandi. Jika Anda tidak ingin mengetikkan kata sandi dan hanya ingin mengklik dialog UAC, gunakanStart-Process -Verb runas
di PowerShell sebagai gantirunas
perintah.lihat: http://satob.hatenablog.com/entry/2017/06/17/013217
sumber
Anda biasanya tidak akan melakukannya, karena Anda tidak akan menjalankannya di bawah * nix. Lakukan pengembangan di direktori pengguna, dan terapkan setelahnya ke direktori sistem.
sumber
di Windows, Anda dapat menggunakan perintah runas. Untuk pengguna linux, ada beberapa alternatif sudo di windows, Anda bisa lihat ini
http://helpdeskgeek.com/free-tools-review/5-windows-alternatives-linux-sudo-command/
sumber
Ada jenisnya. Saya membuat Sudo untuk Windows pada tahun 2007? 08? Ini kertas keamanan yang saya tulis tentang itu - https://www.sans.org/reading-room/whitepapers/bestprac/sudo-windows-sudowin-1726 . Cukup yakin http://sudowin.sf.net masih berfungsi juga.
sumber
Anda dapat menggunakan perintah runas - http://technet.microsoft.com/en-us/library/bb490994.aspx atau sudowin - http://sourceforge.net/projects/sudowin/
sumber
Skrip vbs berikut memungkinkan untuk meluncurkan perintah yang diberikan dengan argumen dengan elevasi dan meniru perilaku perintah sudo unix asli untuk sekumpulan kasus bekas yang terbatas (tidak akan menyimpan kredensial atau memungkinkan untuk benar-benar mengeksekusi perintah dengan kredensial berbeda). Saya memakainya
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
Contoh penggunaan pada prompt perintah
sudo net start service
sumber
Saya rasa saya mencoba langkah-langkah di bawah ini setelah melakukan penelitian & berhasil
1. Instal scoop menggunakan PowerShell 3 (iex (new-object net.webclient) .downloadstring (' https://get.scoop.sh ')) 2. lakukan scoop install --global sudo 3. pastikan jalur (C: \ Users \\ scoop \ shims & C: \ ProgramData \ scoop \ shims) ditambahkan dalam variabel jalur lingkungan.
sumber
Tidak ada perintah sudo dalam kasus windows dan juga tidak perlu memasukkan $. Untuk menginstal Angular CLI melalui command prompt node.js di windows, saya hanya menulis npm install -g @ angular / cli lalu tekan Enter. Ini bekerja dengan baik.
sumber
buka konsol sebagai administrator. Klik kanan pada command prompt atau bash -> lainnya dan pilih "run as administrator"
sumber
Di Windows Powershell Anda dapat menggunakan perintah Mulai-Proses dengan opsi
-Verb RunAs
untuk memulai dan meningkatkan proses. Berikut adalah contoh fungsi sudo saya:Contoh: Buka file host sebagai Admin di notepad
sumber
Menggunakan
sudo
perintah untuk pengguna jendela memberi Anda saran berikut:Pertama, instal
scoop
alat manajemen paket dan jalankan perintah berikut:Kemudian gunakan
scoop
untuk menginstalsudo
perintah:Terakhir, Anda dapat menjalankan perintah dengan
sudo
:sumber
Saya senang membantu Anda.
Untuk membuat perintah sudo ikuti langkah-langkah: -
https://gist.github.com/coder-examples/5ca6c141d6d356ddba4e356d63fb2c13
Semoga ini bisa membantu Anda
sumber
Untuk menjalankan perintah sebagai admin di Powershell yang tidak ditinggikan, Anda dapat menggunakan
Start-Process
secara langsung, dengan opsi yang tepat, khususnya-Verb runas
.Ini jauh lebih berbelit-belit daripada
sudo
, terutama karena Anda tidak bisa hanya menggunakan kembali perintah sebelumnya dengan opsi tambahan. Anda perlu menentukan argumen untuk perintah Anda secara terpisah.Berikut adalah contoh, menggunakan perintah rute untuk mengubah gateway:
Ini gagal karena kami tidak berada dalam PS yang ditinggikan:
Ini berfungsi setelah menerima UAC:
Atau untuk perintah yang membutuhkan
cmd.exe
:sumber