PowerShell スクリプト.ps1 をファイル内で管理者権限で実行するコマンド

PowerShell スクリプト.ps1 をファイル内で管理者権限で実行するコマンドに関する情報です。

 

Windows関連の運用でPowerShellを使うことが多いかと思いますが、そこではまりやすいのが権限の問題です。

 

script.ps1のようなスクリプトファイルを作成して、右クリックしてPowerShellとして実行しても権限が足りないと表示されることがあります。

 

PowerShellスクリプト内で管理者権限が必要になる場合は、正常に実行されない可能性があります。

 

まず、検索してみると以下のコマンドがありました。

 

>powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process PowerShell.exe -Verb runas"

 

ただ、これを実行すると確かに管理者としては起動しますが、別窓であがってきてしまいます。

 

スクリプト内でそのまま引き渡せるかと思ったのですが、引き渡せず。

 

そして、スクリプト内で記述できるパターンであるのがこちらです。

 

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

 

 

サイトなどによって、そのままコピーしても動作しないものもありましたが、以下の記述でそのままスクリプト内に張り付けて動作しました。

 

そのスクリプトがこちらです。

 

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

 

この下に、管理者権限で実行させたいコマンドを記述します。ちょっとしたことですが、動作する記述を見つけるのに時間がかかりました。ということで備忘録です。

 

KOORUI モニター 24インチ VA 非光沢 フルHD pcモニター 5ms 75Hz ディスプレイ HDMI VGA 傾き調整 広い視野角 スピーカー非搭載 24N1A