powershell-windows について
スクリプト作成者向けのWindows PowerShellパターン集で、構文規則とよくある問題をまとめています。演算子の括弧、ASCIIのみの記述、null確認、エラー処理、パス、配列、JSONを扱います。
主な機能
- 01論理演算子の括弧ルール
- 02ASCIIのみで記述する指針
- 03null確認と文字列補間の形式
- 04エラー処理とパスの実践
- 05配列とJSONの操作
活用シーン
- 01PowerShellの構文エラーの回避
- 02null値を扱うスクリプトの作成
- 03スクリプトのエラー処理方法の選択
- 04ネストしたJSONの読み書き
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ vudovn/ ag-kit --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) | Out-Null |
8. JSON 操作
重要:Depth パラメーター
| ❌ 誤り | ✅ 正しい |
|---|---|
ConvertTo-Json | ConvertTo-Json -Depth 10 |
ルール: ネストされたオブジェクトでは、必ず -Depth を指定してください。
ファイル操作
| 操作 | パターン |
|---|---|
| 読み込み | Get-Content "file.json" -Raw | ConvertFrom-Json |
| 書き込み | $data | ConvertTo-Json -Depth 10 | Out-File "file.json" -Encoding UTF8 |
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 対応