Sudo for Windows | Microsoft Learn

これまで PowerShell 等で管理者権限が必要な操作をする場合は、以下のように「管理者権限で実行」を別途行う必要がありました。

この Sudo for Windows は、Linux の sudo のように、一時的に管理者権限を付与して実行することが可能です。

有効化の方法

特にインストール等は必要なく、設定から有効化するだけです。検索窓で sudo などと入力すれば、この設定がサジェストされるはずです。

ターミナルで以下のように表示されれば成功です。

> sudo
sudo for Windows
 
Usage: sudo.exe [OPTIONS] [COMMANDLINE]... [COMMAND]
 
Commands:
  run     管理者としてコマンドを実行する
  config  sudo の現在の構成情報を取得する
  help    Print this message or the help of the given subcommand(s)
 
Arguments:
  [COMMANDLINE]...  実行するコマンドライン
 
Options:
  -E, --preserve-env   現在の環境変数をコマンドに渡す
  -N, --new-window     コマンドに新しいウィンドウを使用する
      --disable-input  ターゲット アプリケーションへの入力を無効にした状態で現在のターミナルで実行します
      --inline         現在のターミナルで実行する
  -D, --chdir <chdir>  コマンドを実行する前に作業ディレクトリを変更してください
  -h, --help           印刷のヘルプ ("--help" で詳細を表示)
  -V, --version        印刷のバージョン

モードの設定

Sudo for Windows は 3 つの動作モードがあります。

詳しくは上記の公式ドキュメントにありますが、以下のどちらかでいいと思います。

  • sudo の実行結果をそのまま使いたい場合 インライン (normal)
  • その他 入力が無効な場合 (disableInput)

PowerShell の実行方法

単に exe やコマンドを起動するだけなら、公式ドキュメントにあるように sudo notebad.exesudo node ... とすればいいのですが、PowerShell のコマンドレットを起動する場合は以下のようにする必要があります。

> sudo pwsh -Command "New-Item -ItemType SymbolicLink -Target $SourcePath -Path $DestinationPath"

上記は管理者権限の必要なシンボリックリンクの作成処理ですが、操作中の PowerShell のコンソールのまま実行できます。(もちろん、管理者権限を求めるダイアログは出ますが)