バッチファイルやPowerShellスクリプトを自動的に管理者として実行させる方法

バッチファイルやPowerShellスクリプトを自動的に管理者として実行させる方法

バッチファイルやPowerShellスクリプトを管理者として実行してほしい場合、システムに詳しくない利用者などに「バッチファイルを右クリックして、メニューから「管理者として実行」をクリックしてください。」と伝えても、往々にしてそのまま実行されてしまい、正常に実行されないことがあります。

そんなときは、バッチファイルやPowerShellスクリプト内に自分自身を管理者として実行する処理を追記しておけば、バッチファイルやPowerShellスクリプトを普通に実行するだけで、自動的に管理者として実行させることができます。

そこでここでは、Windows 10でバッチファイルやPowerShellスクリプトを自動的に管理者として実行させる方法を紹介します。

Windows 10でアプリやプログラムを管理者として実行する7つの方法
ここでは、Windows 10でアプリやプログラムを管理者として実行する7つの方法を紹介します。

この記事は、以下の環境で実行した結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
Windows 10 Pro 64bit1909

バッチファイルの場合

バッチファイルを実行したら自動的に管理者として実行させるには、バッチファイルの先頭に、次の処理を追記します。

@echo off
cd /d %~dp0
for /f "tokens=3 delims=\ " %%i in ('whoami /groups^|find "Mandatory"') do set LEVEL=%%i
if NOT "%LEVEL%"=="High" (
powershell.exe -NoProfile -ExecutionPolicy RemoteSigned -Command "Start-Process %~f0 -Verb runas"
exit
)

rem これ以降に、実行したい処理を記述します

処理内容としては、バッチファイルを実行すると、自分自身が管理者として実行されているかチェックし、もし管理者として実行されていない場合は、管理者として実行しなおしています。

PowerShellスクリプトの場合

PowerShellスクリプトを実行したら自動的に管理者として実行させるには、PowerShellスクリプトの先頭に、次の処理を追記します。

if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole("Administrators"))
{
Start-Process powershell.exe "-File `"$PSCommandPath`"" -Verb RunAs
exit
}

rem これ以降に、実行したい処理を記述します

処理内容としては、PowerShellスクリプトを実行すると、自分自身が管理者として実行されているかチェックし、もし管理者として実行されていない場合は、管理者として実行しなおしています。

なお、Windows 10のWindows PowerShellでは、デフォルトでPowerShellスクリプトの実行が禁止されているので、事前に「Set-ExecutionPolicy RemoteSigned」などを実行して、PowerShellスクリプトが実行できるよう設定しておく必要があります。

あとがき

参考までに、Windows 10でプログラムを管理者として実行する方法は、以下の記事で紹介しています。

Windows 10でアプリやプログラムを管理者として実行する7つの方法
ここでは、Windows 10でアプリやプログラムを管理者として実行する7つの方法を紹介します。