1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PowerShellを毎回UACプロンプトなしで管理者起動する方法〜タスクスケジューラ活用の完全ガイド〜

Last updated at Posted at 2026-01-18

この記事の対象読者

  • PowerShellを日常的に使っている方
  • 管理者権限が必要な作業を頻繁に行う方
  • UACの「はい」ボタンを押すのが面倒になってきた方
  • Windows 10 / 11 を使用している方

この記事で得られること

  • UACプロンプトなしでPowerShellを管理者起動する方法
  • タスクスケジューラを使った安全なUACバイパスの仕組み
  • コピペで使えるPowerShellスクリプト
  • Windows Terminalや他のアプリへの応用方法

この記事で扱わないこと

  • UACの完全無効化(非推奨のため)
  • グループポリシーによる企業向け設定
  • WSL(Windows Subsystem for Linux)の管理者権限

1. 毎回の「はい」が地味にストレスだった話

「管理者として実行しますか?」

PowerShellを開くたびに表示されるこのダイアログ。1回なら問題ない。でも、1日に何十回も管理者権限でコマンドを叩く人間にとって、このワンクリックが積み重なると結構なストレスになる。

私の場合、Docker操作、サービスの再起動、ネットワーク設定の確認など、管理者権限が必要な作業を日常的に行っている。そのたびにマウスに手を伸ばして「はい」をクリック。キーボードから手を離すこの一瞬が、地味に作業の流れを断ち切る。

「UACを完全に無効化すればいいのでは?」

最初はそう考えた。しかし調べてみると、これは悪手だった。

ここまでで、なぜこの問題に取り組むことにしたか、背景がわかったと思う。次は、UACを完全無効化することのリスクを見ていこう。

2. 前提知識の確認

本題に入る前に、この記事で使う用語を整理しておく。

2.1 UAC(User Account Control)とは

UAC(User Account Control、ユーザーアカウント制御)は、Windows Vista以降に導入されたセキュリティ機能だ。管理者権限が必要な操作を行う前に、ユーザーに確認を求める仕組みである。

あの「このアプリがデバイスに変更を加えることを許可しますか?」というダイアログがUACの正体だ。

2.2 タスクスケジューラとは

タスクスケジューラは、Windows標準の自動化ツールだ。特定の時間やイベントをトリガーにして、プログラムやスクリプトを実行できる。

重要なのは、タスクスケジューラには「最上位の特権で実行」というオプションがあること。これを使うと、UACを経由せずに管理者権限でプログラムを起動できる。

2.3 pwsh.exe と powershell.exe の違い

実行ファイル バージョン 備考
powershell.exe Windows PowerShell 5.1 Windows標準搭載
pwsh.exe PowerShell 7以降 別途インストールが必要

この記事では主にPowerShell 7(pwsh.exe)を例に説明するが、Windows PowerShell(powershell.exe)でも同様の手順で設定できる。

これらの用語が押さえられたら、次に進もう。

3. なぜUAC完全無効化は避けるべきなのか

UACをレジストリやグループポリシーで完全に無効化することは技術的には可能だ。しかし、以下の問題が発生する。

3.1 Microsoft Storeアプリが動作しなくなる

UACを完全に無効化すると、Microsoft Storeからインストールしたアプリ(UWPアプリ)が起動できなくなる。「このアプリはUACが無効な状態では起動できません」というエラーが表示される。

これはUWPアプリがセキュリティ上の理由から、限定された権限で動作するよう設計されているためだ。

3.2 マルウェアが管理者権限で自由に動ける

UACが有効な状態では、悪意のあるプログラムが管理者権限を取得しようとすると、必ずダイアログが表示される。これにより、ユーザーは「あれ、何も起動してないのにダイアログが出た」と気づくことができる。

UACを無効化すると、この最後の防波堤がなくなる。

3.3 一部のWindows機能が正常に動作しない

  • スタートメニューの一部機能
  • 設定アプリの一部項目
  • Windows Defender の一部機能

これらがUAC無効化により影響を受ける可能性がある。

UACを無効化するリスクがわかったところで、より安全な代替手段を見ていこう。それがタスクスケジューラを使った方法だ。

4. タスクスケジューラを使った安全なUACバイパス

4.1 仕組みの概要

タスクスケジューラの「最上位の特権で実行」オプションを使うと、そのタスクはUACを経由せずに管理者権限で実行される。

これは「UACを無効化する」のではなく、「特定のプログラムだけUACをスキップする」という発想だ。

システム全体のセキュリティは維持しつつ、よく使うプログラムだけを快適に起動できる。

4.2 動作の流れ

ショートカットをダブルクリック
    ↓
schtasks.exe がタスクを実行
    ↓
タスクスケジューラが「最上位の特権」でPowerShellを起動
    ↓
UACダイアログなしで管理者PowerShellが開く

抽象的な概念がわかったところで、具体的な実装に進もう。

5. 実際に設定してみよう

5.1 環境構築

特別なインストールは不要だ。Windows標準のPowerShellとタスクスケジューラを使用する。

前提条件:

  • Windows 10 または Windows 11
  • 管理者権限を持つユーザーアカウント

5.2 設定スクリプト

まず、管理者権限でPowerShellを開く(これが最後のUACプロンプトになる)。

以下の3種類の設定スクリプトを用意した。用途に応じて選択してほしい。

基本設定(PowerShell 7用)

# setup_admin_powershell.ps1 - PowerShell 7用(このままコピーして使える)
# 実行方法: 管理者PowerShellで実行

$action = New-ScheduledTaskAction -Execute "pwsh.exe"
$principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -RunLevel Highest -LogonType Interactive
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries

Register-ScheduledTask -TaskName "PowerShell_Admin" -Action $action -Principal $principal -Settings $settings

Write-Host "タスク 'PowerShell_Admin' を登録しました。" -ForegroundColor Green
Write-Host "起動コマンド: schtasks /run /tn 'PowerShell_Admin'" -ForegroundColor Cyan

Windows PowerShell 5.1用

# setup_admin_powershell_legacy.ps1 - Windows PowerShell 5.1用(このままコピーして使える)
# 実行方法: 管理者PowerShellで実行

$action = New-ScheduledTaskAction -Execute "powershell.exe"
$principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -RunLevel Highest -LogonType Interactive
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries

Register-ScheduledTask -TaskName "PowerShell5_Admin" -Action $action -Principal $principal -Settings $settings

Write-Host "タスク 'PowerShell5_Admin' を登録しました。" -ForegroundColor Green
Write-Host "起動コマンド: schtasks /run /tn 'PowerShell5_Admin'" -ForegroundColor Cyan

Windows Terminal用

# setup_admin_terminal.ps1 - Windows Terminal用(このままコピーして使える)
# 実行方法: 管理者PowerShellで実行

$action = New-ScheduledTaskAction -Execute "wt.exe"
$principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -RunLevel Highest -LogonType Interactive
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries

Register-ScheduledTask -TaskName "WindowsTerminal_Admin" -Action $action -Principal $principal -Settings $settings

Write-Host "タスク 'WindowsTerminal_Admin' を登録しました。" -ForegroundColor Green
Write-Host "起動コマンド: schtasks /run /tn 'WindowsTerminal_Admin'" -ForegroundColor Cyan

5.3 実行確認

タスクが正しく登録されたか確認しよう。

# タスクの確認
Get-ScheduledTask -TaskName "PowerShell_Admin"

# 実際に実行してみる
schtasks /run /tn "PowerShell_Admin"

5.4 実行結果

上記のコマンドを実行すると、以下のような出力が得られる。

PS C:\Windows\System32> Get-ScheduledTask -TaskName "PowerShell_Admin"

TaskPath                                       TaskName                          State
--------                                       --------                          -----
\                                              PowerShell_Admin                  Ready

PS C:\Windows\System32> schtasks /run /tn "PowerShell_Admin"
成功: スケジュール タスク "PowerShell_Admin" の実行が試行されました。

新しいPowerShellウィンドウがUACプロンプトなしで開けば成功だ。

5.5 ショートカットの作成

毎回コマンドを打つのは面倒なので、ショートカットを作成しよう。

  1. デスクトップで右クリック → 新規作成ショートカット
  2. 「項目の場所」に以下を入力:
    schtasks /run /tn "PowerShell_Admin"
    
  3. 名前を「PowerShell (Admin)」などに設定
  4. 完了をクリック

アイコンの変更(オプション)

ショートカットを右クリック → プロパティアイコンの変更

PowerShell 7のアイコンを使いたい場合:

C:\Program Files\PowerShell\7\pwsh.exe

5.6 よくあるエラーと対処法

エラー 原因 対処法
アクセスが拒否されました 管理者権限で実行していない PowerShellを「管理者として実行」で開き直す
タスクが見つかりません タスク名の誤り Get-ScheduledTask で正確なタスク名を確認
ユーザー名が無効です ユーザー名に特殊文字 $env:USERNAME の代わりに直接ユーザー名を指定
ウィンドウがバックグラウンドで開く タスクスケジューラの仕様 後述のワークアラウンドを参照

ウィンドウがフォーカスされない問題の対処法

タスクスケジューラから起動したウィンドウは、バックグラウンドで開くことがある。これを解決するには、cmd.exe 経由で起動する方法がある。

# フォーカス問題を解決するバージョン
$action = New-ScheduledTaskAction -Execute "cmd.exe" -Argument '/c start "" "pwsh.exe"'
$principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -RunLevel Highest -LogonType Interactive
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries

Register-ScheduledTask -TaskName "PowerShell_Admin_Focused" -Action $action -Principal $principal -Settings $settings -Force

基本的な使い方をマスターしたので、次は応用例を見ていこう。

6. ユースケース別ガイド

6.1 ユースケース1: 開発者向け - 複数ツールの管理者起動

  • 想定読者: Docker、Git、Node.jsなどを日常的に使う開発者
  • 推奨構成: 複数のタスクを一括登録
  • サンプルコード:
# setup_dev_admin_tools.ps1 - 開発ツール一括設定
# 実行方法: 管理者PowerShellで実行

$tools = @(
    @{ Name = "PowerShell_Admin"; Execute = "pwsh.exe"; Args = $null },
    @{ Name = "Terminal_Admin"; Execute = "wt.exe"; Args = $null },
    @{ Name = "VSCode_Admin"; Execute = "code"; Args = $null }
)

foreach ($tool in $tools) {
    $actionParams = @{ Execute = $tool.Execute }
    if ($tool.Args) { $actionParams.Argument = $tool.Args }
    
    $action = New-ScheduledTaskAction @actionParams
    $principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -RunLevel Highest -LogonType Interactive
    $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
    
    Register-ScheduledTask -TaskName $tool.Name -Action $action -Principal $principal -Settings $settings -Force
    Write-Host "登録完了: $($tool.Name)" -ForegroundColor Green
}

Write-Host "`n登録されたタスク一覧:" -ForegroundColor Cyan
Get-ScheduledTask | Where-Object { $_.TaskName -match "_Admin" } | Format-Table TaskName, State

6.2 ユースケース2: システム管理者向け - 特定ディレクトリで起動

  • 想定読者: サーバー管理やスクリプト実行を行うシステム管理者
  • 推奨構成: 作業ディレクトリを指定してPowerShellを起動
  • サンプルコード:
# setup_admin_with_workdir.ps1 - 作業ディレクトリ指定版
# 実行方法: 管理者PowerShellで実行

$workingDir = "C:\Scripts"  # お好みのディレクトリに変更

$action = New-ScheduledTaskAction -Execute "pwsh.exe" -Argument "-NoExit -Command `"Set-Location '$workingDir'`"" -WorkingDirectory $workingDir
$principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -RunLevel Highest -LogonType Interactive
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries

Register-ScheduledTask -TaskName "PowerShell_Admin_Scripts" -Action $action -Principal $principal -Settings $settings -Force

Write-Host "タスク登録完了。起動時のディレクトリ: $workingDir" -ForegroundColor Green

6.3 ユースケース3: カスタムプロファイル読み込み

  • 想定読者: PowerShellプロファイルをカスタマイズしている方
  • 推奨構成: プロファイルを確実に読み込んで起動
  • サンプルコード:
# setup_admin_with_profile.ps1 - プロファイル読み込み版
# 実行方法: 管理者PowerShellで実行

$profilePath = $PROFILE.CurrentUserAllHosts

$action = New-ScheduledTaskAction -Execute "pwsh.exe" -Argument "-NoExit -Command `". '$profilePath'`""
$principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -RunLevel Highest -LogonType Interactive
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries

Register-ScheduledTask -TaskName "PowerShell_Admin_Profile" -Action $action -Principal $principal -Settings $settings -Force

Write-Host "タスク登録完了。プロファイル: $profilePath" -ForegroundColor Green

ユースケースが把握できたところで、この記事を読んだ後の学習パスを確認しよう。

7. 学習ロードマップ

この記事を読んだ後、次のステップとして以下をおすすめする。

初級者向け(まずはここから)

  1. PowerShell公式ドキュメント - タスクスケジューラモジュール
  2. Windows タスクスケジューラの基本

中級者向け(実践に進む)

  1. PowerShellプロファイルのカスタマイズ
  2. 複数のスケジュールタスクを管理するスクリプト作成
  3. PSReadLineによるコマンドライン体験の向上

上級者向け(さらに深く)

  1. Windows セキュリティベースラインでUACポリシーを理解
  2. グループポリシーによるエンタープライズ環境での管理
  3. LAPS(Local Administrator Password Solution)との組み合わせ

8. タスクの削除方法

設定を元に戻したい場合は、以下のコマンドでタスクを削除できる。

# 確認なしで削除
Unregister-ScheduledTask -TaskName "PowerShell_Admin" -Confirm:$false

# 確認付きで削除(推奨)
Unregister-ScheduledTask -TaskName "PowerShell_Admin"

まとめ

この記事では、タスクスケジューラを使ってPowerShellをUACプロンプトなしで管理者起動する方法を解説した。

  1. UACの完全無効化は避けるべき(Storeアプリが動かなくなる等のリスク)
  2. タスクスケジューラの「最上位の特権」オプションを使えば、特定のアプリだけUACをスキップできる
  3. ショートカットを作成すれば、ダブルクリックで管理者PowerShellが起動する

私の所感

正直、この設定をするまで「UACなんて邪魔なだけ」と思っていた。しかし調べてみると、UACはそれなりに考えられたセキュリティ機構だとわかった。

完全無効化ではなく、「必要なものだけバイパス」というアプローチは、セキュリティと利便性のバランスを取る良い方法だと思う。

毎日のちょっとしたストレスが解消されるだけで、開発体験はかなり良くなる。ぜひ試してみてほしい。


参考文献

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?