Windows Terminal 1.13 から管理者権限に昇格できるプロファイルを定義できるとはいえ、いちいち管理者権限が付与されたウィンドウを立ち上げたくはない。POSIXのように sudo <command>
で同一ウィンドウ(タブ)で実行したい。
これには gsudo というそのまんまなことができるものがあるので導入する。winget を導入しているのであれば、以下でインストールできる。
winget install gerardog.gsudo
導入後は以下のように gsudo <command>
で管理者権限で任意のコマンドを実行できる。
gsudo ls
しかし、$profile
は読んでくれないようなので、$profile
に定義されている関数などを実行したい場合は、以下のようにする必要がある。
gsudo "pwsh.exe -Login -Command { <command> }"
毎回これを入力するのは面倒くさいので、$profile
に以下を定義しておく。
function Invoke-As-Admin() { if ($args.count -eq 0) { gsudo return } $cmd = $args -join ' ' gsudo "pwsh.exe -Login -Command { $cmd }" } Set-Alias -Name: "sudo" -Value: "Invoke-As-Admin"
これでPOSIXライクに管理者権限で任意のコマンドを実行できるようになる。
sudo ls
なお、sudo
(gsudo
) とすると、POSIX でいう sudo su -
のような挙動となる。
環境
- OS: Windows 11 Pro
- バージョン: 21H2
- ビルド番号: 22000.526
- PowerShell: 7.2.1