Skip to content

原文(日本語に翻訳)

PowerShellツールのプロンプトにバージョンに応じた構文ガイダンスを追加しました(5.1 vs 7+)。

原文(英語)

Improved PowerShell tool prompt with version-appropriate syntax guidance (5.1 vs 7+)

概要

Claude CodeのPowerShellツールが、実行中のPowerShellのバージョン(5.1または7以上)を自動的に検出し、そのバージョンに適した構文のガイダンスをAIに提供するようになりました。PowerShell 5.1と7+では構文が異なる場合があり(三項演算子、nullの合体演算子など)、バージョンに応じた正しいコードが生成されるよう改善されました。

基本的な使い方

powershell
# PowerShell バージョンの確認方法
$PSVersionTable.PSVersion

# PowerShell 5.1 (Windows PowerShell - Windowsに同梱)
# Major: 5, Minor: 1

# PowerShell 7+ (PowerShell Core - クロスプラットフォーム)
# Major: 7以上

# Claude Code が自動的にバージョンを検出して適切な構文を使用する

実践例

バージョン別の構文の違い

powershell
# 三項演算子(PowerShell 7+のみ)
# PowerShell 7+
$value = $condition ? "yes" : "no"

# PowerShell 5.1 (修正後: Claude Codeが正しい構文を生成)
$value = if ($condition) { "yes" } else { "no" }

# null合体演算子(PowerShell 7+のみ)
# PowerShell 7+
$result = $value ?? "default"

# PowerShell 5.1
$result = if ($null -ne $value) { $value } else { "default" }

バージョン検出の動作確認

powershell
# PowerShell 5.1 環境でClaude Codeにスクリプトを書かせる場合
# 修正後: PowerShell 5.1の構文で生成される

claude "配列の中でnullでない最初の値を取得するPowerShellコードを書いてください"

# PowerShell 5.1 向けに生成されるコード例:
$values = @($null, $null, "first-value", "second-value")
$result = $values | Where-Object { $_ -ne $null } | Select-Object -First 1

PowerShell 7+固有の機能を使ったコード

powershell
# PowerShell 7+ 環境でClaude Codeにスクリプトを書かせる場合
# 修正後: PowerShell 7+の構文が使用される

# PowerShell 7+ でのみ利用可能な機能:
# - ForEach-Object -Parallel
# - 三項演算子 (?:)
# - null合体代入演算子 (??=)
# - && と || パイプラインチェーン演算子

# 例: 並列処理(PS 7+のみ)
1..10 | ForEach-Object -Parallel { 
    Start-Sleep -Milliseconds 100
    "Processed: $_"
} -ThrottleLimit 5

注意点

  • PowerShell 5.1はWindows 10/11にデフォルトでインストールされています
  • PowerShell 7+は別途インストールが必要です(公式サイトからダウンロード)
  • コマンドレット名などの基本的な構文は両バージョンで互換性があります
  • Windows PowerShellのパスは %WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe
  • PowerShell 7+のパスは C:\Program Files\PowerShell\7\pwsh.exe

関連情報