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

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

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

また、PowerShellスクリプトの場合も、別途PowerShellスクリプトを管理者として実行するためのバッチファイルを作成しておく必要があるなどの手間があります。

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

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

Windows10でプログラムを管理者として実行する方法
Windows環境では、管理者アカウントでサインインしていても、通常の操作は標準アカウントと同じ権限で実行されており、システムに関わる操...

動作環境

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

ソフトウェアバージョン
Windows10 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スクリプトを実行すると、自分自身が管理者として実行されているかチェックし、もし管理者として実行されていない場合は、管理者として実行しなおしています。

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

あとがき

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

Windows10でプログラムを管理者として実行する方法
Windows環境では、管理者アカウントでサインインしていても、通常の操作は標準アカウントと同じ権限で実行されており、システムに関わる操...

記事が役立ったらシェアしてくれるとうれしいです。

あなたにおすすめのコンテンツ