[2026年版] PowerShell 7 / Windows Terminal × OneDriveの罠を回避して最強にカスタマイズする方法

Windows Terminalを使いこなし、プロンプトをカッコよくカスタマイズしたい!と思い立ったものの、標準的な解説記事通りに進めてもエラーばかりで挫折しそうになったことはありませんか?

特にOneDriveで「ドキュメント」フォルダを同期している環境では、PowerShellの設定(プロファイル)が特殊な場所に配置されるため、初心者泣かせの挙動を連発します。

今回は、私がPowerShell 7.6系のカスタマイズで遭遇した「検索してもなかなか解決しなかったエラー」の実例とその解決策、そしてOneDriveの干渉を受けにくい「中継役(リレー)構成」をまとめました。

1. 遭遇した具体的なエラーメッセージと原因

同じエラーで検索してこのページに辿り着いた方は、以下の解決策を確認してください。

① Get-PoshThemes is not recognized / 「Get-PoshThemes」コマンドが見つからない

Get-PoshThemes: The term 'Get-PoshThemes' is not recognized as a name of a cmdlet, function...

原因: Oh My Poshは現在、PowerShellモジュールではなくCLIとして使う構成が主流です。古い記事にある Get-PoshThemes などのコマンドは使えないことがあります。現在は oh-my-posh コマンドを使用します。

② New-Item: Could not find file / プロファイル作成時にファイルが作れない

New-Item: Could not find file 'C:\Users\...\OneDrive\ドキュメント\PowerShell\Microsoft.PowerShell_profile.ps1'.

原因: $PROFILE の親フォルダが存在しない、OneDrive配下の「ドキュメント」フォルダが同期や保護機能の影響を受けている、またはWindowsの「コントロールされたフォルダーへのアクセス」によってPowerShellからの書き込みがブロックされている可能性があります。

なお、PowerShell公式ドキュメントでも、WindowsではDocumentsフォルダがOneDriveやフォルダーリダイレクトの影響を受けることがあり、プロファイルスクリプトやモジュール読み込みのエラー原因になり得ると説明されています。

③ Install-Package: Administrator rights are required / インストール時の管理者権限エラー

Install-Package: Administrator rights are required to install or update. 

原因: Install-Module / PowerShellGet v2 系の経路では、環境によってNuGetプロバイダーやインストール先の権限でつまずくことがあります。PowerShell 7系でPSResourceGetが使える環境なら、Install-PSResource や Save-PSResource を使う方がトラブルを避けやすいです。

④ CONFIG NOT FOUND / Oh My Posh が赤背景でエラー表示される

プロンプトに真っ赤な背景で CONFIG NOT FOUND と表示される。 原因: –config に指定したテーマファイルのパスが存在しない、古いOh My Poshモジュール時代の環境変数が残っている、テーマ名の解決に失敗している、OneDrive配下のパス解決や同期状態が不安定、などが考えられます。

⑤ running scripts is disabled on this system / スクリプトの実行が無効になっている

File ...\Microsoft.PowerShell_profile.ps1 cannot be loaded because running scripts is disabled on this system.

原因: PowerShellの実行ポリシーにより、プロファイルスクリプトの読み込みがブロックされています。CurrentUserスコープで RemoteSigned を許可すると解決することがあります。

⑥ oh-my-posh is not recognized / oh-my-posh コマンドが見つからない

oh-my-posh: The term 'oh-my-posh' is not recognized as a name of a cmdlet, function...

原因: Oh My Poshのインストール直後でPATHが反映されていない、wingetのインストール先がPATHに入っていない、またはPowerShellを再起動していない可能性があります。

2. 解決策:OneDriveを回避する「中継役(リレー)方式」

これらの問題をまとめて回避しやすくするのが、「中継役(リレー)方式」です。

  • OneDrive側($PROFILE): PowerShellが見に行く場所。ここには1行だけ書き、ローカルファイルを読み込ませる。
  • ローカル側(本体): OneDrive同期から外れた C:\Users….powershell フォルダ。ここに設定の実体とモジュールをすべて集約する。

3. 完全攻略:ステップバイステップ構築手順

STEP 1:ローカルフォルダの作成(OneDriveを避ける)

まず、セキュリティブロックの影響を受けない場所に「聖域」を作ります。

New-Item -ItemType Directory -Path "$env:USERPROFILE\.powershell" -Force
New-Item -ItemType Directory -Path "$env:USERPROFILE\.powershell\Modules" -Force

STEP 2:ツールのインストール

winget を使って必要なツールをインストールします。Oh My Poshは管理者権限なしでも動くように –scope user を指定します。

winget install JanDeDobbeleer.OhMyPosh --scope user
winget install Neovim.Neovim
winget install ajeetdsouza.zoxide

インストール後、PATHを反映させるためにPowerShellを一度閉じて開き直してください。

STEP 3:モジュールをローカルにインストール

Install-Module ではなく Save-PSResource でローカルフォルダに直接保存します。

# アイコン表示モジュールをローカルに保存
Save-PSResource -Name Terminal-Icons -Path "$env:USERPROFILE\.powershell\Modules"

STEP 3.5:テーマファイル(paradox)を直接ダウンロード

CONFIG NOT FOUND を避けるため、テーマファイルを自分でローカルに置いてしまいます。

Invoke-WebRequest -Uri "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/paradox.omp.json" -OutFile "$env:USERPROFILE\.powershell\paradox.omp.json"

STEP 4:ローカルの設定ファイル(本体)を作成

$env:USERPROFILE.powershell\profile.ps1 を作成し、以下を記述します。これが心臓部です。

# モジュールパスにローカルフォルダを追加(重要!)
$env:PSModulePath = "$env:USERPROFILE\.powershell\Modules;$env:PSModulePath"

# Oh My Posh(ローカルファイルを直接指定)
oh-my-posh init pwsh --config "$env:USERPROFILE\.powershell\paradox.omp.json" | Invoke-Expression

# 各種ツールの初期化
Import-Module -Name Terminal-Icons
Invoke-Expression (& { (zoxide init powershell | Out-String) })

# エイリアス設定
Set-Alias vi nvim
Set-Alias vim nvim

STEP 5:OneDrive側のプロファイルから中継する

最後に、エクスプローラーで $PROFILE の場所(例:OneDrive\ドキュメント\PowerShell)を開き、Microsoft.PowerShell_profile.ps1 を手動で作成します。

$PROFILE の場所は、PowerShellで以下を実行すると確認できます。

$PROFILE

PowerShellから作成できる環境であれば、以下でも作成できます。

New-Item -ItemType Directory -Path (Split-Path -Parent $PROFILE) -Force
New-Item -ItemType File -Path $PROFILE -Force

ただし、OneDrive同期やWindowsセキュリティの「コントロールされたフォルダーへのアクセス」が有効な環境では、PowerShellからの書き込みがブロックされることがあります。その場合は、Windowsセキュリティで pwsh.exe を許可するか、無理にコマンドで作らずエクスプローラーで手動作成する方が確実です。

中身は以下の1行だけです。

. "$env:USERPROFILE\.powershell\profile.ps1"

4. まとめ:快適なターミナルは構成から

多くのユーザーが「OneDrive内のドキュメントフォルダに設定ファイルを置く」という構成で苦しめられています。しかし、今回のように「設定の実体はローカルに、OneDriveは最小限の中継だけ」という構成にすることで、同期トラブルや権限エラーをかなり避けやすくなります。

もし設定中に Set-ExecutionPolicy 関連のエラーが出た場合は、以下のコマンドで実行権限を許可してください。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

自分だけの最強ターミナルで、開発効率を爆上げしましょう!

参考情報