スポンサーリンク
スポンサーリンク

【バッチ】.batファイルでPowerShellコマンドを管理者権限で実行する(おまじない)

上級者向け
スポンサーリンク

バッチファイル(.bat)の先頭に以下の記述を差し込み、PowerShellコマンドを入力すると、管理者権限に昇格したうえでPowerShellコマンドを実行できます。標準的な設定では、起動時はUACプロンプトが出現します。

.ps1ファイルは実行ポリシーを変更したうえで、ファイルを右クリックして「PowerShellで実行」しなければいけませんが、キッティング作業などでは超面倒くさい。この方法では、これらのステップを踏まずに済みます。

@powershell で始まる行の「17」は、これが書かれている行を指定します。(@powershell~が書かれているのが17行目なので、17を入れている)

@echo off
setlocal enabledelayedexpansion
cd /d %~dp0

rem 管理者権限で実行
openfiles > nul

if "%1"=="" (
set arg=
) else (
set arg= -ArgumentList "%1"
)
if errorlevel 1 (
   PowerShell.exe -Command Start-Process \"%~f0\"%arg% -Verb runas
   exit
)
@powershell -NoProfile -ExecutionPolicy Unrestricted "$s=[scriptblock]::create((gc \"%~f0\"|?{$_.readcount -gt 17})-join\"`n\");&$s" %*&goto:eof
#この下に管理者権限で実行するPowerShellコマンド