Windowsで「sudo」コマンドを実行する方法


92

Windowsで次のコマンドを実行するにはどうすればよいですか。

$ sudo django-admin.py startproject NEW


Windowsで端末コマンドを使用しないことをお勧めします。代わりに、Eclipse + PyDevなどのIDEを使用して同じことを試してください。それは物事をはるかに簡単にします。
Pushpak Dagade

7
@Pushpak Dagade:私は一般的にあなたのコメントに頭を悩ませていましたが、タイプしてみると、これがスタックオーバーフローであることに気付きました。これらは、Windowsでターミナルを使用する人々です。=)つまり、PowerShellは他の方法では存在しない可能性があります。
ブレントリッテンハウス

2
また、彼がタスクを自動化するスクリプトを作成していた場合はどうでしょうか。(はい、私はあなたが特権ユーザーとしてTHATを実行できることを理解しています。)
ブレントリッテンハウス

Chocolateyパッケージとして入手可能なWindows用のsudoに似たツールであるwsudoを試してください。
noseratio

回答:


97

sudoWindowsにはコマンドはありません。最も近いものは「管理者として実行」です。

これを行うにrunasは、管理者の信頼レベルでコマンドを使用するか、UIでプログラムを右クリックして[ 管理者として実行]を選択します。


4
runasの動作がバージョンごとに異なるかどうか知っていますか?Win7エンタープライズをインストールし、runasで試したすべての組み合わせにより、管理者権限なしで新しいcmdが作成されます
notNullGothik

4
Sudo for Windows(sudowin)を使用すると、許可されたユーザーは、独自のパスフレーズを使用して、昇格された特権でプロセスを起動できます。runasコマンドとは異なり、Sudo for Windowsはユーザーのプロファイルと作成されたオブジェクトの所有権を保持します。あなたはそれをここで得ることができます:sourceforge.net/projects/sudowin
Joe Bigler

チェックアウトgsudostackoverflow.com/a/58753166/97471)。*nix sudoユーザーエクスペリエンスのあるWindows用のsudo :現在のコンソール内でコマンドを実行できるようになり、資格情報キャッシュ(UACポップアップが1つだけ)。
Gerardo Grignoli

runasは、管理者のユーザーアカウントの昇格です。sudoは別のものです。これは受け入れられる答えではありません。
マッシモ

14

メモ帳を開き、次のコードを貼り付けます。

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

次に、ファイルをとして保存しますsudo.cmd。このファイルをコピーして貼り付けるC:\Windows\System32か、パスをsudo.cmdPATH環境変数に追加します。

コマンドプロンプトを開くと、次のように実行できますsudo start .

コマンドを実行するときにadminコマンドプロンプトウィンドウを開いたままにする場合は、メモ帳のコードを次のように変更します。

@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% && %*'です。%*すべての引数を意味するので、そうした場合、パラメータはfooとbarであるため、sudo foo barコマンドプロンプトで実行されfoo bar、を%*返しますfoo barcd /d %CD%現在のディレクトリに移動するコマンドです。これにより、昇格したウィンドウを開いたときに、ディレクトリが通常のウィンドウと同じになります。&&最初のコマンドが成功した場合、2番目のコマンドを実行することを意味します。

/cコマンドが終了した後、ウィンドウを閉じるためのCMDパラメータであり、/kウィンドウのオープンを維持するためのCMDのパラメータです。

現在のディレクトリコードにとどまっているAdam Plocherの功績です。


これに関する1つの問題は、一度昇格すると、現在のフォルダーではなくにいるということC:\Windows\System32です。
noseratio

2
@noseratio true、これをこれに変更すると効果があるようですが、powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k cd /d %CD% && %*'"
Adam Plocher '22

@AdamPlocher、それはうまくいくかもしれませんが、コマンドライン%*に引用符がある場合は問題が発生する可能性があります。それがwsudo、PowerShellベースで作成した理由です。
noseratio

これは、管理者のユーザーアカウントの昇格です。sudoは別のものです。
マッシモ

powershell行の先頭に追加して、echo1行目と3行目をスキップすることはできません@か?
nudl

9

すべての回答は、新しいコンソールホストでコマンドを昇格する方法を説明しています。

面白かったのは、これらのツールのいずれものよう*nix sudoに動作せず、現在のコンソール内でコマンドを実行できることです。

だから、私は書きました:gsudo

ソースコードhttps://github.com/gerardog/gsudo

取り付け

スクープ経由

  • scoopがない場合はインストールします。次に:
scoop install gsudo

またはChocolatey経由

choco install gsudo

手動インストール:

デモ

gsudoデモ


8

は、現在のディレクトリのコンテキストで、昇格された権限でプログラムまたはコマンドを実行するためのWindows用のwsudoオープンソースのsudoようなCLIツールを作成しました。Chocolateyパッケージとして利用できます

ビルドエージェントの設定、などの管理sfc /scannowdism /online /cleanup-image /restorehealthまたは単にローカルのChocolateyパッケージのインストール/更新などに多く使用します。自己責任。

取り付け

choco install wsudo

Chocolateyが既にインストールされている必要があります。

目的

wsudosudo管理者以外のシェルコマンドプロンプトから(管理者として)昇格された権限を持つプログラムを呼び出し、現在のディレクトリを維持するための、Linuxに似たWindows用ツールです。

この実装は、従来のWindows Script Host(CScript)に依存していません。代わりに、"Start-Process -Wait -Verb runAs ..."コマンドレットを呼び出すヘルパーPowerShell 5.1スクリプトを使用します。ほとんどの場合、システムにはすでに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 reproにアクセスしください。


2
「wsudo」を公開していただき、ありがとうございます。あなたのwsudoの利点は、作業ディレクトリを他の方法とは違っておくことです。wsudo以外のCWDを保持できるものを見つけることができませんでした。説明ではこの点を強調すべきだと思います。本当にありがとうございました。
benok

3
もう1つお知らせしておきます。シェルを直接開くためのアドレスバーハックを知っていますか?私は通常このハックを使用しますが、このハックで昇格されたシェルを取得したいときに非常にイライラしました。私は多くの選択肢を見つけようとしましたが、うまくいきませんでした。やっと「wasudo [shell]」で開くことができます。これが大好きです。ありがとうございました:-)
benok

3
@benok、私はそうです、それは確かに便利なハックです!うれしいwasudoことに、それはあなたのために簡単になりました。私自身は主にVSCode統合コンソール端末に住んでいるので、そこで入力するだけですwasudo:)次の改善点は、環境変数を継承することです
noseratio

@benokこんにちは、あなたもコピーを改善するための私の新しいユーティリティに興味があるかもしれません/ペースト/実行の生産性、DevComrade :)
noseratio

5

runasコマンドでは、ユーザーはパスワードを入力する必要があります。パスワードを入力せず、UACダイアログをクリックするだけの場合Start-Process -Verb runasは、runasコマンドではなくPowerShellを使用します。

参照:http : //satob.hatenablog.com/entry/2017/06/17/013217


これは、管理者のユーザーアカウントの昇格です。sudoは別のものです。
マッシモ



3

runasコマンドを使用できます -http : //technet.microsoft.com/en-us/library/bb490994.aspxまたはsudowin- http: //sourceforge.net/projects/sudowin/


これは、管理者のユーザーアカウントの昇格です。sudoは別のものです。
マッシモ


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
シェルプログラムの出力を読み取れるように、スクリプトでユーザー入力を待機させるにはどうすればよいですか。
Ahmad Hajjar 2018

1
対話型のシェルコマンドですか?さて、最初に、起動されたコマンドが返されるのを待つことを確認する必要があります。ここではそれが可能であるようです。次に、シェルオブジェクトから出力を取得して出力する必要があります。これも可能だと思います。ただし、UNIXで実行できるすべてのことが可能になるとは期待しないでください。
ceztko

窓10上では、ライン1文字6上の構文エラースロー
マーティン・ブラウン

これは、管理者のユーザーアカウントの昇格です。sudoは別のものです。
マッシモ

1

いくつかの調査を行って成功した後、以下の手順を試したと思います

1. powershell 3を使用してscoopをインストールします(iex(new-object net.webclient).downloadstring( ' https://get.scoop.sh '))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:\ドライブにenvフォルダーを作成します。
  2. binという名前のenvフォルダー内にフォルダーを作成します。
  3. C:\ env \ binをPATHに追加します。
  4. C:\ env \ binにファイルsudo.batを作成します。
  5. メモ帳で編集して、次のコードを記述します。- https :
    //gist.github.com/coder-examples/5ca6c141d6d356ddba4e356d63fb2c13

これがあなたを助けることを願っています


この回答には、バッチファイルのテキストを含める必要があります。リンクの腐敗のために、サイト外のリンクに依存しないでください。また、答えには、このスクリプトがsudoの粗い動作をエミュレートしようとするが、実際には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.