概要

WindowsでコマンドプロンプトやPowerShellで実行するコマンドについて、管理者権限で実行したいと言うことがあります。

LinuxやmacOSでは、sudoコマンドを利用することで特定のコマンドだけ管理者権限で実行可能ですが、コマンドプロンプトやPowerShellにはそのようなものはありません。

ここでは、この問題を解決する方法を紹介します。

環境

  • Windows 11 21H2
  • PowerShell 7.2.3

管理者権限での実行のために

コマンドプロンプトやPowerShellでは、LinuxやmacOSにあるターミナルのように、シェルとしてOSを操作するコマンドを実行できます。もちろんWindowsで実行しているため、完全に同じような使い方、フィーリングで実行できるわけではありませんが、雰囲気はとても近いです。

コマンドによっては、管理者でコマンドを実行したいと言うことがあります。例えば私の環境では、Windowsのパッケージ管理としてChocolateyを利用しているのですが、こちらの管理用のコマンドは管理者権限で実行する必要があります。Linuxなどでは、sudoコマンドを用いれば簡単に特定のコマンドを管理者権限として実行できるのですが、Windowsにはこの機能はありません。Windowsの場合は、コマンドプロンプトやPowerShell自体を管理者権限で実行することで、そこで実行するコマンドの全てを管理者権限で実行できるのですが、改めてソフトを立ち上げる必要があるため、少し面倒です。

そこで、このようなことをするのは面倒で不便ですので、何か解決方法がないかと調べると、gsudoというソフトを利用することで、Linuxと似たようなフィーリングで、管理者権限でコマンドを実行することができました。

GitHub - gerardog/gsudo: Sudo for Windows

gsudoをインストール

gsudoは、様々な方法でインストールすることができます。私はChocolateyを利用しているので、これを利用してインストールしましたが、他にもScoopやwinget、純粋なPowerShellだけでもインストールできます。

お好きな方法で、コマンドを実行してインストールします。

# Chocolatey
choco install gsudo

# Scoop
scoop install gsudo

# winget
winget install gsudo

# PowerShellのコマンド
PowerShell -Command "Set-ExecutionPolicy RemoteSigned -scope Process; [Net.ServicePointManager]::SecurityProtocol = 'Tls12'; iwr -useb https://raw.githubusercontent.com/gerardog/gsudo/master/installgsudo.ps1 | iex"

私の環境では、インストール後の利用前に、一度PowerShellを実行しているWindows Terminalを修了させてから起動させる必要がありました。

gsudoの利用は簡単です。sudoと同じように管理者権限で実行したいコマンドの前にgsudoをつけて実行します。

# Chocolateyの全てのパッケージを更新するコマンド
gsudo choco upgrade all

gsudoの実行時に、管理者として実行してもよいか、確認ウィンドウが表示されます。アカウントの設定にもよりますが、はいを選択したり、パスワードを入力したりすることで、管理者として実行されます。

これで、簡単に特定のコマンドだけを管理者として実行できるようになりました。

さいごに

gsudoはとても便利です。おそらくLinuxなどで使えるsudoのようなフィーリングで使えるので、sudoコマンドになれている方は、使いやすいかと思います。