PowerShellをバッチから管理者権限で動かす

ALL
スポンサーリンク

バッチファイルから、PowerShellスクリプトを管理者権限で動かす方法です。
PowerShellスクリプトはエクスプローラからダブルクリックで実行できず、管理者権限で動かすのも面倒です。
バッチファイルから実行するとダブルクリックで実行も出来て楽ちんです。

次のように書きます。「# ここから先に~」の後に、PowerShellスクリプトを記述します。

バッチファイル

@(echo '> NUL
echo off)
NET SESSION > NUL 2>&1
IF %ERRORLEVEL% neq 0 goto RESTART
setlocal enableextensions
set "THIS_PATH=%~f0"
set "PARAM_1=%~1"
PowerShell.exe -Command "iex -Command ((gc \"%THIS_PATH:`=``%\") -join \"`n\")"
exit /b %errorlevel%
:RESTART
powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process %~f0 -Verb runas"
exit
') | sv -Name TempVar
# ここから先に PowerShellスクリプトを記述する

このバッチファイルは、下記サイトの内容に、管理者権限で実行する個所を追加したものです。

バッチファイルにPowerShellスクリプトを埋め込む – Programming Field

本記事で紹介したバッチファイルは、バッチファイル・PowerShellスクリプト共用です。
バッチファイルとして実行した場合は、NET SESSION > NUL 2>&1 ~ exit の個所が実行されます。
PowerShellスクリプトとして実行した場合は、
「# ここから先に PowerShellスクリプトを記述する」
から先が実行されます。

本記事のバッチファイルでは、始めに管理者として実行されているかチェックします。
管理者だった場合は、自分自身を PowerShellスクリプトとして実行しなおします。
管理者では無い場合は、自分自身を管理者権限のPowerShellスクリプトとして実行しなおします。
この際、管理者権限を得る為に「ユーザアカウント制御」ダイアログが表示されます。

PowerShellスクリプトとして実行されると、
「# ここから先に PowerShellスクリプトを記述する」
から先を実行します。

スポンサーリンク

参考

PowerShellやバッチファイルで管理者特権をチェック – Qiita
バッチファイルにPowerShellスクリプトを埋め込む – Programming Field
バッチファイルを管理者権限で動作させる パソコン鳥のブログ
コマンドプロンプトからプログラムを管理者として実行する方法です。 パソコン鳥のブログ


コメント