【Windows】Claude Code CLIを
PowerShellで
使えるようにインストールした

Claude Code CLIは、以前はWSL(Windows Subsystem for Linux、Windows上でLinux環境を動かす機能)がないと動かないというイメージを持たれがちでした。
ですが今は状況が変わっていて、Windowsネイティブの環境から直接PowerShellで動かせます。
今回はそのセットアップ手順と、実際にハマった箇所を書いておきます。

irm https://claude.ai/install.ps1 | iexCode language: JavaScript (javascript)

ターミナルにパスを追加する必要がある場合は、

$claudeBin = "$env:USERPROFILE\.local\bin"
$userPath = [Environment]::GetEnvironmentVariable("Path", "User")
if ($userPath -notlike "*$claudeBin*") {
  $newPath = if ([string]::IsNullOrWhiteSpace($userPath)) {
    $claudeBin
  } else {
    "$userPath;$claudeBin"
  }
  [Environment]::SetEnvironmentVariable("Path", $newPath, "User")
}Code language: PHP (php)

関連記事

1. claude codeインストール手順(irm, iex)

作業を始める前に、開いているターミナルがPowerShellかCMDかを確認しておきます。
プロンプトが PS C:\Users\...> のようにPSで始まっていればPowerShellです。
C:\Users\...> だけで始まっている場合はCMDなので、PowerShellを別途開き直してください1

PowerShellを開いたら、次のコマンドを実行します。
管理者権限は不要です。

irm https://claude.ai/install.ps1 | iexCode language: JavaScript (javascript)

irm はInvoke-RestMethod、iex はInvoke-Expressionの略で、公式のインストールスクリプトを取得してその場で実行しているだけです。
実行が終わったら、一度PowerShellを閉じて開き直してください。
インストール直後は claude コマンドがまだ認識されないことがあり、これはPATHの変更が今のセッションに反映されていないためです。

開き直したら、次で確認します。

claude --version
claude doctor

バージョン確認は claude --version で、より詳しい診断が必要なら claude doctor を使います。
あとはプロジェクトのフォルダに移動して claude と打てば起動します。
一度入れてしまえば、以降のバージョンアップはバックグラウンドで自動的に行われます2
初回はブラウザでのログインを求められます。
なお利用にはClaude Pro、Max、Team、Enterprise、Consoleのいずれかのアカウントが必要で、無料のClaude.aiプランだけでは動きません。

1.1. 動作環境

Windows 10のビルド1809以降、あるいはWindows Server 2019以降が対象です。
RAMは4GB以上、CPUアーキテクチャはx64かARM64、そしてインターネット接続が必要になります。
これを満たしていれば、Native Installと呼ばれる方式でそのままインストールできます3

1.2. Git for Windowsとシェルの関係

Git for Windowsは必須ではありませんが、入れておくと選択肢が増えます。

Git for Windowsを入れていない環境では、Claude CodeはPowerShell toolを使ってシェルコマンドを実行します。
入れている場合は、同梱されているbash互換シェルのGit Bashも使えるようになります。
まれにGit Bashのパスが自動検出されないことがあり、その場合はsettings.jsonに直接パスを書いて解決できます4

PowerShellをClaude Code内の主要シェルとして固定したい場合は、設定ファイルに1行書き加えます。
設定ファイルは ~/.claude/settings.json、つまり通常は C:\Users\<ユーザー名>\.claude\settings.json です。

{
  "env": {
    "CLAUDE_CODE_USE_POWERSHELL_TOOL": "1"
  }
}Code language: JSON / JSON with Comments (json)

その場限りで試したいだけなら、セッション内で環境変数をセットするだけでも動きます。

$env:CLAUDE_CODE_USE_POWERSHELL_TOOL = "1"
claudeCode language: PHP (php)

毎回自動で有効にしたい場合は、ユーザー環境変数として登録してからPowerShellを開き直します。

[Environment]::SetEnvironmentVariable("CLAUDE_CODE_USE_POWERSHELL_TOOL", "1", "User")Code language: PHP (php)

2. claudeコマンドが見つからない?

ここからは実際に遭遇したエラーです。
インストールしたはずなのに、PowerShellで claude と打つと次のように返ってきました。

claude : 用語 'claude' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。Code language: JavaScript (javascript)

PowerShellを再起動しても直りませんでした。
似た症状はAnthropicのGitHubリポジトリにもIssueとして報告されており、珍しいケースではないようです5
こういうときは、まずインストール先に実体があるかどうかを確認します。
Windows版の実体は通常 %USERPROFILE%\.local\bin に置かれます。
PATHはコマンド名だけで実行するときにOSが探すフォルダの一覧のことです。
実体があってもPATHに登録されていなければ、コマンド名だけでは見つかりません。

次の順で確認します。

$claudeBin = "$env:USERPROFILE\.local\bin"
Test-Path "$claudeBin\claude.exe"
Get-ChildItem $claudeBin -ErrorAction SilentlyContinueCode language: PHP (php)

2.1. ターミナルでコマンドを見つける仕組み(PATH)

Test-Path がTrueを返す、あるいは claude.exe がフォルダの中に見つかるなら、インストール自体は完了していてPATHの設定だけが漏れています。
その場合は次のスクリプトでPATHに追加します。

$claudeBin = "$env:USERPROFILE\.local\bin"
$userPath = [Environment]::GetEnvironmentVariable("Path", "User")
if ($userPath -notlike "*$claudeBin*") {
  $newPath = if ([string]::IsNullOrWhiteSpace($userPath)) {
    $claudeBin
  } else {
    "$userPath;$claudeBin"
  }
  [Environment]::SetEnvironmentVariable("Path", $newPath, "User")
}Code language: PHP (php)

このスクリプトを実行したあと、PowerShellを完全に閉じて開き直します。
開き直したら、次で最終確認します。

where.exe claude
claude --version
claudeCode language: CSS (css)

自分のケースでは、これでちゃんと動くようになりました。
インストールコマンド自体は最初から正しく、原因はPATHが設定されていなかったことだけでした。
ターミナルをきちんと再起動すれば、それで解決します。

2.2. 再インストールする場合

もし最初の Test-Path がFalseを返し、.local\bin の中に claude.exe も見当たらない場合は、そもそもインストールが完了していません。
インストール直後にPowerShellを再起動せず同じウィンドウのまま claude --version を打ってしまい、PATHがまだ反映されていないだけなのに未インストールと勘違いするケースも見られます6
その場合は改めてインストールコマンドを実行してください。

irm https://claude.ai/install.ps1 | iexCode language: JavaScript (javascript)

実行後、もう一度同じ確認を行います。

Test-Path "$env:USERPROFILE\.local\bin\claude.exe"
where.exe claude
claude --versionCode language: JavaScript (javascript)

それでも解決しない場合は、WinGet経由でのインストールを試す方法も残されています。

winget install Anthropic.ClaudeCodeCode language: CSS (css)

claudeコマンドが認識されないというエラーだけを見ると原因がわかりにくく感じますが、実際にはほとんどの場合、インストールが未完了か、PATHに実行ファイルのフォルダが入っていないかのどちらかに絞られます。

3. 他のインストール方法

3.1. WinGetでのインストール

WinGetからも入れられます。

winget install Anthropic.ClaudeCodeCode language: CSS (css)

WinGet経由の場合はPATHの設定も自動で行われるため、インストール後にパスを手動で通す作業は基本的に発生しません7
この方法は自動更新の対象外なので、更新するときは手動で次を打つ必要があります。

winget upgrade Anthropic.ClaudeCodeCode language: CSS (css)

3.2. WSLを使う場合との比較

WSLでも利用できますが、その場合はPowerShellではなくWSL内のLinuxターミナルからLinux用のインストーラーを実行し、起動もそのWSLターミナル内で完結させる必要があります8
Linux系のツールチェーンを使いたい、またはsandboxing、つまり隔離された環境での実行が必要な場合はWSL 2が向いています。
Windowsネイティブのプロジェクトをそのまま扱いたいなら、PowerShellでのネイティブ利用のほうが手数が少なくて済みます。
Windowsネイティブ環境ではsandboxingに対応していない点は覚えておいてください。

  1. この判別方法は公式ドキュメントにも同じ内容で載っており、CMDでirmコマンドを打つと未対応コマンドとして扱われる現象もあわせて説明されています。 – Advanced setup – Claude Code Docs
  2. ネイティブインストールされたClaude Codeは、起動のたびに最新版へ自動更新される仕様になっています。 – Advanced setup – Claude Code Docs
  3. 公式ドキュメントでも、PowerShellまたはCMDからインストールコマンドを実行するだけでよく、管理者権限は不要だと明記されています。 – Advanced setup – Claude Code Docs
  4. CLAUDE_CODE_GIT_BASH_PATHという環境変数キーにGit Bashの実行ファイルパスを指定すると、自動検出に失敗する環境でもBash toolを使えるようになります。 – Advanced setup – Claude Code Docs
  5. あるIssueでは、インストーラーが「Claude Code successfully installed!」と表示しバイナリの場所まで示したにもかかわらず、実際にはclaudeコマンドが認識されないという報告が上がっています。 – [BUG] Native Windows(Powershell) install of Claude Code is not viable
  6. PATHの変更は新しいシェルにしか反映されないため、インストール直後の同じウィンドウで確認すると古いPATHのまま判定してしまいます。 – Installing Claude Code on Windows in 2026: The Native Installer Walkthrough That Actually Works
  7. WinGetとNative Installは同じClaude Codeのバイナリを配布していますが、WinGet側はPATH設定まで含めて自動で処理してくれる点が異なります。 – How to Install Claude Code: Complete Setup Guide for Every Platform (2026)
  8. WSL版のclaudeはWSLのターミナル内でインストールし起動するもので、PowerShellやCMDからは実行できません。 – Advanced setup – Claude Code Docs