Windows에서 'sudo'명령을 실행하는 방법


96

Windows에서 다음 명령을 어떻게 실행합니까?

$ sudo django-admin.py startproject NEW

?


Windows에서 터미널 명령을 사용하지 않는 것이 좋습니다. 대신 Eclipse + PyDev와 같은 IDE의 도움으로 동일한 작업을 수행하십시오. 그것은 일을 훨씬 더 간단하게 만들 것입니다.
Pushpak Dagade

8
@Pushpak Dagade : 일반적으로 귀하의 의견에 불쾌감을 느꼈지만, 이것을 입력하러 갔을 때 이것이 스택 오버 플로라는 것을 깨달았습니다. 이들은 Windows에서 터미널을 사용하는 사람들입니다. =) PowerShell은 그렇지 않으면 존재하지 않을 것입니다.
Brent Rittenhouse

2
또한 그가 작업을 자동화하는 스크립트를 작성한다면 어떨까요? (예, 당신이 혜택받지 사용자로 그것을 실행할 수 있습니다 알고 있습니다.)
브렌트 리튼 하우스

Chocolatey 패키지로 제공되는 Windows 용 sudo와 유사한 도구 인 내 wsudo를 사용해보십시오 .
noseratio

답변:


101

sudoWindows 에는 명령 이 없습니다 . 가장 가까운 것은 "관리자 권한으로 실행"입니다.

runas관리자 신뢰 수준 의 명령을 사용 하거나 UI에서 프로그램을 마우스 오른쪽 단추로 클릭하고 "관리자 권한으로 실행"을 선택 하여이 작업을 수행 할 수 있습니다 .


4
runas의 동작이 버전마다 다른지 아십니까? 나는 Win7 엔터프라이즈를 설치했고 runas로 시도한 모든 조합은 관리자 권한없이 새로운 cmd를 생성합니다
notNullGothik

4
Windows 용 Sudo (sudowin)를 사용하면 인증 된 사용자가 자신의 암호를 사용하여 상승 된 권한으로 프로세스를 시작할 수 있습니다. runas 명령과 달리 Windows 용 Sudo는 생성 된 개체의 사용자 프로필과 소유권을 유지합니다. 여기에서 얻을 수 있습니다 : sourceforge.net/projects/sudowin
Joe Bigler

확인하십시오 gsudo( stackoverflow.com/a/58753166/97471 ). *nix sudo사용자 경험 이있는 Windows 용 sudo : 현재 콘솔 및 자격 증명 캐시 (단 하나의 UAC 팝업) 내에서 명령을 실행할 수 있습니다.
Gerardo Grignoli

runas는 관리자의 사용자 계정 상승입니다. sudo는 또 다른 것입니다. 이것은 받아 들여지는 대답이 아니어야합니다.
Massimo

16

메모장을 열고 다음 코드를 붙여 넣습니다.

@echo off
powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/c cd /d %CD% && %*'"
@echo on

그런 다음 파일을 sudo.cmd. 이 파일을 복사 하여 PATH 환경 변수에 붙여 넣거나 C:\Windows\System32경로를 추가하십시오 sudo.cmd.

명령 프롬프트를 열면 이제 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는, 바, 그리고 있기 때문에 %*반환 foo bar. cd /d %CD%현재 디렉토리로 이동하는 명령입니다. 이렇게하면 상승 된 창을 열 때 디렉터리가 일반 창과 동일하게됩니다. &&첫 번째 명령이 성공하면, 두 번째 명령을 실행하는 것을 의미한다.

/c명령이 완료된 후 창을 닫는 cmd를 매개 변수이며,이 /k창을 열어 유지하는 cmd를 매개 변수입니다.

에 신용 아담 Plocher 현재 디렉토리 코드에서 체류합니다.


한 가지 문제는 일단 상승하면 더 이상 현재 폴더가 아니라 C:\Windows\System32.
noseratio

2
@noseratio 사실입니다.이 값을 변경하면 트릭이되는 것 같습니다.powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"
Adam Plocher

@AdamPlocher, 작동 할 수 있지만 명령 줄 %*에 따옴표가 있으면 문제가 발생할 수 있습니다 . 이것이 제가 wsudoPowerShell 기반을 만든 이유 입니다.
noseratio

이것은 관리자의 사용자 계정 상승입니다. sudo는 또 다른 것입니다.
Massimo

powershell 줄 echo을 앞에 추가 하여 줄 1과 3을 건너 뛸 수 있습니까 @?
nudl

13

모든 답변은 콘솔 호스트 에서 명령을 높이는 방법을 설명합니다 .

나를 즐겁게 한 것은 이러한 도구 중 어떤 것도.와 같이 작동하지 않아 현재 콘솔 *nix sudo내에서 명령을 실행할 수 있다는 것 입니다.

그래서 저는 다음과 같이 썼습니다 : gsudo

소스 코드 https://github.com/gerardog/gsudo

설치

특종을 통해

  • 아직 가지고 있지 않다면 Scoop을 설치 하십시오. 그때:
scoop install gsudo

또는 Chocolatey를 통해

choco install gsudo

수동 설치 :

데모

gsudo 데모


9

나는 현재 디렉토리의 컨텍스트에서 상승 된 권한으로 프로그램이나 명령을 실행하기 위해 Windows 용 wsudo오픈 소스 sudo와 유사한 CLI 도구 인을 만들었습니다 . Chocolatey 패키지 로 제공됩니다 .

나는 빌드 에이전트, 관리자 같은 것들을 구성과 같은 물건이 많이 사용 sfc /scannow, dism /online /cleanup-image /restorehealth또는 간단하게 설치 / 내 로컬 Chocolatey 패키지를 업데이트합니다. 자신의 책임하에 사용하십시오.

설치

choco install wsudo

Chocolatey 가 이미 설치되어 있어야합니다.

목적

wsudosudo관리자가 아닌 셸 명령 프롬프트에서 관리자 권한으로 상승 된 프로그램을 호출하고 현재 디렉터리를 유지하는 Windows 용 Linux 유사 도구입니다.

이 구현은 레거시 Windows 스크립트 호스트 ( CScript) 에 의존하지 않습니다 . 대신 다음을 호출하는 도우미 PowerShell 5.1 스크립트를 사용합니다."Start-Process -Wait -Verb runAs ..." cmdlet . 시스템에 이미 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 재현을 참조하세요 .


2
"wsudo"를 게시 해주셔서 감사합니다. 저에게 매우 유용합니다. 나는 당신의 wsudo의 장점은 대안과 달리 작업 디렉토리를 유지하는 것이라고 생각합니다 . wsudo 이외의 CWD를 유지할 수 없습니다. 설명에서이 점을 강조해야한다고 생각합니다. 정말 감사합니다.
benok

3
한 가지 더 알려 드리겠습니다. 셸을 직접 여는 주소 표시 줄 해킹 을 알고 있습니까? 저는 보통이 해킹을 사용하지만,이 해킹으로 높은 쉘을 얻고 싶을 때 매우 실망했습니다. 나는 많은 대안을 찾으려고 노력했지만 작동하지 않았습니다. 드디어 "wasudo [shell]"로 열 수 있습니다. 나는 이것을 갖고 싶다. 다시 한 번 감사드립니다 :-)
benok

3
@benok, 나는 정말 편리한 해킹입니다! 다행 wasudo이 당신을 더 쉽게 만들었습니다. 나는 주로 VSCode 통합 콘솔 터미널에 살고 있으므로 wasudo거기에 입력합니다 . 다음 개선 사항은 환경 vars 상속하는 입니다.
noseratio 2019

안녕하세요 @benok, 복사 / 붙여 넣기 / 실행 생산성 향상을위한 새로운 유틸리티, DevComrade :)
noseratio

5

runas명령을 사용하려면 사용자가 암호를 입력해야합니다. 암호를 입력하지 않고 UAC 대화 상자 만 클릭하려면 명령 Start-Process -Verb runas대신 PowerShell 에서 사용하십시오 runas.

참조 : http://satob.hatenablog.com/entry/2017/06/17/013217


이것은 관리자의 사용자 계정 상승입니다. sudo는 또 다른 것입니다.
Massimo

4

* nix에서 실행하지 않기 때문에 일반적으로 그렇지 않습니다. 사용자 디렉터리에서 개발하고 나중에 시스템 디렉터리에 배포합니다.





2

다음 vbs 스크립트는 상승이있는 인수를 사용하여 주어진 명령을 시작할 수 있으며 제한된 사용 사례 세트에 대해 원래 unix sudo 명령의 동작을 모방합니다 (자격 증명을 캐시하지 않으며 다른 자격 증명으로 명령을 실제로 실행할 수 없습니다). 나는 그것을 입었다 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
스크립트가 사용자 입력을 기다리도록 만들면 쉘 프로그램의 출력을 읽을 수 있습니까?
아마드 Hajjar

1
대화 형 쉘 명령을 의미합니까? 음, 먼저 실행 된 명령이 반환 될 때까지 대기하는지 확인해야합니다. 여기 에서 가능한 것 같습니다. 그런 다음 셸 개체에서 출력을 가져 와서 출력해야합니다. 이것이 가능하다고 생각합니다. 하지만 유닉스에서 할 수있는 모든 것이 가능할 것이라고 기대하지 마십시오.
ceztko

창 (10)에 그것은 라인 1 문자 (6)에 구문 오류가 발생합니다
마틴 브라운에게

이것은 관리자의 사용자 계정 상승입니다. sudo는 또 다른 것입니다.
Massimo

1

나는 약간의 조사를하고 성공한 후에 아래 단계를 시도했다고 생각합니다.

1. powershell 3 (iex (new-object net.webclient) .downloadstring ( ' https://get.scoop.sh '))을 사용하여 scoop을 설치합니다. 2. do scoop install --global sudo 3. 경로를 확인하십시오 (C : \ Users \\ scoop \ shims & C : \ ProgramData \ scoop \ shims)가 환경 경로 변수에 추가되었습니다.


1

Windows의 경우 sudo 명령이 없으며 $를 넣을 필요도 없습니다. Windows의 node.js 명령 프롬프트를 통해 Angular CLI를 설치하기 위해 npm install -g @ angular / cli를 작성한 다음 Enter 키를 누릅니다. 잘 작동했습니다.


0

관리자 권한으로 콘솔을 엽니 다. 명령 프롬프트 또는 bash-> more를 마우스 오른쪽 단추로 클릭하고 "관리자 권한으로 실행"을 선택하십시오.


0

Windows Powershell에서는 Start-Process 명령을 옵션과 함께 사용하여 프로세스 -Verb RunAs를 시작하고 상승시킬 수 있습니다. 다음은 내 sudo 함수 예제입니다.

function sudo {
    Start-Process @args -verb runas
}

예 : 메모장에서 관리자로 호스트 파일 열기

sudo notepad C:\Windows\System32\drivers\etc\hosts

0

sudo창 사용자에 대한 명령을 사용하면 다음과 같은 제안이 제공됩니다.

먼저 scoop패키지 관리 도구를 설치 하고 다음 명령을 실행하십시오.

여기에 이미지 설명 입력

그런 다음 명령 scoop을 설치하는 데 사용하십시오 sudo.

여기에 이미지 설명 입력

마지막으로 다음을 사용하여 명령을 실행할 수 있습니다 sudo.

여기에 이미지 설명 입력


0

도와 드리겠습니다.

sudo 명령을 만들려면 다음 단계를 따르십시오.

  1. C : \ Drive에 env 폴더를 만듭니다.
  2. env 폴더 안에 bin이라는 폴더를 만드십시오.
  3. 이제 C : \ env \ bin을 PATH에 추가하십시오.
  4. C : \ env \ bin에 sudo.bat 파일을 만듭니다.
  5. 메모장으로 편집하고 다음 코드를 작성하십시오 : -https :
    //gist.github.com/coder-examples/5ca6c141d6d356ddba4e356d63fb2c13

이것이 당신을 도울 수 있기를 바랍니다


이 답변에는 배치 파일의 텍스트가 포함되어야하며 링크 부패로 인해 사이트 외부 링크에 의존하지 않아야합니다. 또한 대답에는이 스크립트가 sudo의 거친 동작을 모방하려고하지만 실제로는 sudo가 아니라는 면책 조항이 포함되어야합니다 (의사 수도).
asky

0

권한이없는 Powershell에서 관리자 권한으로 명령을 실행하려면 Start-Process올바른 옵션, 특히 -Verb runas.

sudo특히 추가 옵션을 사용하여 이전 명령을 재사용 할 수 없기 때문에 보다 복잡 합니다. 명령에 대한 인수를 별도로 지정해야합니다.

다음은 route 명령을 사용하여 게이트웨이를 변경하는 예입니다.

이것은 우리가 높은 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.