powershell-windows について
Windows向けスクリプトの構文とよくある落とし穴を扱うPowerShellのリファレンススキルです。演算子、nullチェック、パス、JSON、エラー処理について、安全な書き方を例示します。
主な機能
- 01演算子での括弧のルール
- 02ASCII文字のみを使う指針
- 03null安全なアクセスパターン
- 04文字列補間の指針
- 05エラー処理の実践例
- 06パス、配列、JSONのパターン
活用シーン
- 01論理演算子の解析エラー回避
- 02任意値の安全な処理
- 03堅牢なJSONファイル操作
- 04スクリプトのエラー動作の選択
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ davila7/ claude-code-templates --skill powershell-windowsインストール後、Claude Code で/powershell-windowsを入力して読み込まれたか確認します。
詳細
PowerShell Windows パターン
Windows PowerShell における重要なパターンと注意点です。
1. 演算子の構文ルール
重要: 括弧が必須
| ❌ 誤り | ✅ 正しい |
|---|---|
if (Test-Path "a" -or Test-Path "b") | if ((Test-Path "a") -or (Test-Path "b")) |
if (Get-Item $x -and $y -eq 5) | if ((Get-Item $x) -and ($y -eq 5)) |
ルール: 論理演算子を使用する場合、各コマンドレット呼び出しは必ず括弧で囲んでください。
2. Unicode/絵文字の制限
重要: スクリプトで Unicode を使用しない
| 用途 | ❌ 使用しない | ✅ 使用する |
|---|---|---|
| 成功 | ✅ ✓ | [OK] [+] |
| エラー | ❌ ✗ 🔴 | [!] [X] |
| 警告 | ⚠️ 🟡 | [*] [WARN] |
| 情報 | ℹ️ 🔵 | [i] [INFO] |
| 進行中 | ⏳ | [...] |
ルール: PowerShell スクリプトでは ASCII 文字のみを使用してください。
3. null チェックのパターン
アクセス前に必ず確認する
| ❌ 誤り | ✅ 正しい |
|---|---|
$array.Count -gt 0 | $array -and $array.Count -gt 0 |
$text.Length | if ($text) { $text.Length } |
4. 文字列補間
複雑な式
| ❌ 誤り | ✅ 正しい |
|---|---|
"Value: $($obj.prop.sub)" | 先に変数へ格納する |
パターン:
$value = $obj.prop.sub
Write-Output "Value: $value"
5. エラー処理
ErrorActionPreference
| 値 | 用途 |
|---|---|
| Stop | 開発時(早期に失敗させる) |
| Continue | 本番スクリプト |
| SilentlyContinue | エラーが想定される場合 |
Try/Catch のパターン
- try ブロック内で return しないでください
- クリーンアップには finally を使用してください
- try/catch の後で return してください
6. ファイルパス
Windows のパスのルール
| パターン | 用途 |
|---|---|
| リテラルパス | C:\Users\User\file.txt |
| 変数パス | Join-Path $env:USERPROFILE "file.txt" |
| 相対パス | Join-Path $ScriptDir "data" |
ルール: クロスプラットフォームでの安全性のため、Join-Path を使用してください。
7. 配列操作
正しいパターン
| 操作 | 構文 |
|---|---|
| 空の配列 | $array = @() |
| 要素の追加 | $array += $item |
| ArrayList への追加 | `$list.Add($item) |
8. JSON 操作
重要: Depth パラメーター
| ❌ 誤り | ✅ 正しい |
|---|---|
ConvertTo-Json | ConvertTo-Json -Depth 10 |
ルール: ネストされたオブジェクトには、必ず -Depth を指定してください。
ファイル操作
| 操作 | パターン |
|---|---|
| 読み取り | `Get-Content "file.json" -Raw |
| 書き込み | `$data |
9. よくあるエラー
| エラーメッセージ | 原因 | 対処法 |
|---|---|---|
| "parameter 'or'" | 括弧の欠落 | コマンドレットを () で囲む |
| "Unexpected token" | Unicode 文字 | ASCII のみを使用する |
| "Cannot find property" | null オブジェクト | 先に null を確認する |
| "Cannot convert" | 型の不一致 | .ToString() を使用する |
10. スクリプトのテンプレート
# Strict mode
Set-StrictMode -Version Latest
$ErrorActionPreference = "Continue"
# Paths
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
# Main
try {
# Logic here
Write-Output "[OK] Done"
exit 0
}
catch {
Write-Warning "Error: $_"
exit 1
}
注意: PowerShell には独自の構文ルールがあります。括弧、ASCII のみの使用、null チェックは必ず守ってください。
コメント
Markdown 対応