以下について記載します。
・PowerShellを監理者権限に昇格して実行したい。
・ps1スクリプト実行時に監理者権限でない場合、自動的に昇格させて実行したい。
2024/3/30:追記
いつも使ってるbatからps1実行する方法投稿しました。
超簡単に.Ps1を実行する方法
目次
PowerShellを監理者権限に昇格して実行したい
ps1実行時に自動的に昇格させたい
PowerShellを監理者権限に昇格して実行したい
- WindowsメニューからPowerShellを右クリックし、管理者として実行する。
- もしくは、WindowsメニューからPowerShellを起動し、以下のコマンドを入力
PowerShell
Start-Process powershell -verb runas
コマンド | 意味 |
---|---|
Start-Process powershell | PowerShellを新しく始めます |
-Verb RunAs | 管理者権限で |
ps1実行時に自動的に昇格させたい
スクリプトの頭にこれを挿入するだけでOK
hoge.ps1
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 | PowerShellを新しく始めます |
"-File `"$PSCommandPath`" | 自分自身のフルパスを指定します |
-Verb RunAs | 管理者権限で |
; exit | 現在のスクリプトを終了します。 |
直訳すると
現在の実行権限を確認します。 もし管理者権限でなければ、自分自身を管理者権限のPowerShellで新たに起動します。 ついでに現在のスクリプトは終了します