あるSEのつぶやき・改

ITやシステム開発などの技術に関する話題を、取り上げたりしています。

コマンドで管理者権限のコマンドプロンプトとPowerShellを表示する方法

はじめに

コマンドプロンプトやPowerShellで、管理者として実行するのって非常に面倒くさくないですか?

この記事では、通常のコマンドプロンプトやPowerShellから、suというコマンドを実行するだけで、管理者権限のコマンドプロンプトまたはPowerShellを起動する方法をご紹介します。

コマンドプロンプトの設定

コマンドプロンプトで以下のコマンドを実行するだけで、管理者権限のコマンドプロンプトが別ウィンドウで表示されます。

> powershell start-process cmd -verb runas

これを、どこでもsuコマンドを実行しても動作するようにします。

ユーザーフォルダ (C:\Users\ユーザー名)で、su.bat というファイル名で、以下の内容を記述して保存します。

powershell start-process cmd -verb runas

この状態で、コマンドプロンプトのユーザーフォルダでsuを実行すると、管理者権限のコマンドプロンプトが別ウィンドウで表示されます。

ここで、ユーザーフォルダにパスを通します。

設定画面を表示し、「システム環境変数の編集」と検索して以下の画面を表示し、「環境変数」をクリックします。

f:id:fnyablog:20200727014926p:plain

システム環境変数の「Path」を選択して「編集」をクリックします。

f:id:fnyablog:20200727013417p:plain

「新規」から、ユーザーフォルダのパス(C:\Users\ユーザー名)を追加し保存します。

f:id:fnyablog:20200727013517p:plain

Windows を再起動して設定を反映します。

すると、コマンドプロンプトを起動して、どこのフォルダからでも、suと実行することで管理者権限のコマンドプロンプトが表示されるようになります。

なお、setxコマンドを使用してPATHを設定しなかったのは、リスクがあるためです。リスクについては下記記事を参考にしてください。(英語)

www.shellhacks.com

PowerShell の設定

PowerShell はデフォルトで外部スクリプトを実行できないようになっているので、PowerShellを管理者権限で開き、以下のコマンドを実行して、外部スクリプトの実行を許可します。

> Set-ExecutionPolicy RemoteSigned

実行が終了したら、一度PowerShellを閉じます。

そして、改めて一般ユーザー(そのまま)の権限でPowerShellを起動します。

ユーザーのプロファイルにsuのエイリアスを作成します。

> New-Item –type file –force $profile
> notepad $profile

テキストエディタが起動したら、以下の内容を記述して保存します。

function su {
  start-process powershell -verb runas
}

一度、PowerShell を閉じて、再度一般ユーザーの権限でPowerShellを起動します。

suと実行すると、別ウィンドウで管理者権限のPowerShellが表示されます。

おわりに

上記のように設定することで、コマンドプロンプトとPowerShellを一般ユーザー権限で使用中に、管理者権限が必要になればいつでもsuと実行するだけで管理者権限のコマンドプロンプトまたはPowerShellを起動できるようになりました。

これは、かなり便利なTipsだと思うので、ぜひ活用してください。