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

バッチファイルから、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
バッチファイルを管理者権限で動作させる パソコン鳥のブログ/ウェブリブログ
コマンドプロンプトからプログラムを管理者として実行する方法です。 パソコン鳥のブログ/ウェブリブログ




WindowsでLinuxコマンドを実行する方法
村田 繁

ユーザレビュー:

amazon.co.jpで買う
Amazonアソシエイト by WindowsでLinuxコマンドを実行する方法 の詳しい情報を見る / ウェブリブログ商品ポータル

この記事へのコメント

この記事へのトラックバック