---
tool: "opencode"
session_id: "ses_10d7cc4c6ffeeOXOiqCEKSPyyS"
thread_name_or_summary: "repo `C:\\Users\\You\\Workspace\\Workbench\\repo` で、`Get-PowerShellExecutable` 関数の3系統実装を「very thorough」で調査してください。READ-ONLY。 この関数は前回レビューで「hook 系…"
started_at: "2026-06-23T12:25:47.1930000+09:00"
updated_at: "2026-06-23T12:29:33.3070000+09:00"
workspace: "C:\\Users\\You\\Workspace\\Workbench\\repo"
source_path: "C:\\Users\\You\\.local\\share\\opencode\\opencode.db"
vault_relative_path: "AI/opencode/2026/06/2026-06-23_ses_10d7_repo_`C_Users_You_Workspace_Workbench_repo`_で、`Get-PowerShel.md"
---

# repo `C:\Users\You\Workspace\Workbench\repo` で、`Get-PowerShellExecutable` 関数の3系統実装を「very thorough」で調査してください。READ-ONLY。 この関数は前回レビューで「hook 系…

- Tool: `opencode`
- Session ID: `ses_10d7cc4c6ffeeOXOiqCEKSPyyS`
- Started: `2026-06-23 12:25:47 +09:00`
- Updated: `2026-06-23 12:29:33 +09:00`
- Workspace: `C:\Users\You\Workspace\Workbench\repo`
- Source Path: `C:\Users\You\.local\share\opencode\opencode.db`

## Conversation

### USER [2026-06-23 12:29:33 +09:00]

repo `C:\Users\You\Workspace\Workbench\repo` で、`Get-PowerShellExecutable` 関数の3系統実装を「very thorough」で調査してください。READ-ONLY。

この関数は前回レビューで「hook 系 (codex/copilot Hook.Common.ps1) / register 系 (register-home/office-ai-log-sync-task.ps1) / shared 系 (shared/codex-startup-ping.ps1) に別実装が存在」と指摘されていました。現状 codex-hooks/ExportConversation.ps1 側の dead code 定義は前回削除済み。残る3系統を shared module へ統一したい。

調査対象:
1. `scripts/codex-hooks/Hook.Common.ps1` L747 付近の `Get-PowerShellExecutable` 実装。`pwsh` 優先、WindowsApps を弾くか弾かないか、fallback 順序。
2. `scripts/copilot-hooks/Hook.Common.ps1` 同名関数。
3. `scripts/shared/codex-startup-ping.ps1` の `Get-PowerShellExecutableOutsideWindowsApps` 含む実装。
4. `scripts/register-home-ai-log-sync-task.ps1`, `scripts/register-office-ai-log-sync-task.ps1`, その他 register 系スクリプトで同名 or 類似関数があるか。
5. それぞれがどのスクリプト/ファイルから呼び出されるか。呼び出し元の PowerShell 実行（hook で spawn する時、raw コマンド呼び出しの時等）。
6. WindowsApps を弾くか弾かないか、`pwsh` 優先か `Get-Command` 優先か、`$PSHOME` を使うか `Program Files` を使うか、6 系統の差分を比較表にしたい。
7. shared module `scripts/shared/powershell-executable.ps1` を新設した時に影響を受けるファイル一覧と、dot-source の方法。codex-hooks / copilot-hooks は `Hook.Common.ps1` を dot-source してるので、そこから更に `shared/powershell-executable.ps1` を dot-source する形か、Hook.Common.ps1 が直接 import して expose する形か。
8. PowerShell 7 (`pwsh`) の §StrictMode や `$ErrorActionPreference` で競合しないか。`$PSHOME` 解決が sideload 実行で `$PSHOME` が呼び出し元の 5.1 に張り付くリスク。
9. 共通 module を作る時の testing 入口。`scripts/test-codex-hook-runtime.ps1` 等が共通 module を通すかどうか。

戻り値（マスター向けに読める形）:
- 3系統の実装差（getter / WindowsApps 弾き / fallback 順序 / `$PSHOME` 利用 / 等）を1行サマリで並べた比較表
- 共通 module `scripts/shared/powershell-executable.ps1` を新設した時の API 提案（関数名、parameter、戻り値）
- 影響を受けるファイル一覧（codex-hooks/Hook.Common.ps1, copilot-hooks/Hook.Common.ps1, shared/codex-startup-ping.ps1, register-home-ai-log-sync-task.ps1, register-office-ai-log-sync-task.ps1, その他）
- 呼び出し元が `$PSHOME` を前提にしてる箇所の有無
- test 入口の更新要否
- 想定コミット粒度と実行順
- リスク: 共通化で壊れそうな場所（例: 5.1 と 7 の `$PSHOME` 差、WindowsApps 弾きが無いと Windows Store pwsh が入ってる環境でハマる等）

grep/glob/read/bash(rg) は自由に。ファイル編集はしない。

### ASSISTANT [2026-06-23 12:27:05 +09:00]

ピピッ、解析進行中です。dead code 整理の次は3系統の統合ですね、美味しい consolidation 案件。一気に並べて解剖します。

## Phase 1: 関数定義と実装の実体確認

3系統の「正体」と callers までを同時並行で洗います。

### ASSISTANT [2026-06-23 12:28:43 +09:00]

甘くない。grep で予想以上の変種が出ました。`ExportConversation.ps1` L21 (copilot-hooks) は dead code 削除 済みと言われてた実装が**まだ生きてる**し、更に `Get-OcgoPowerShellExecutable`、`Get-NatureRemoHiddenPowerShellExecutable`、`Get-WindowsPowerShellExecutable` (`register-k12-rdp-watchdog`) という親類も見えます。これら全部読みます。

## Phase 2: 各実装の中身を精読

### ASSISTANT [2026-06-23 12:29:11 +09:00]

3系統 + ExportConversation dead code 都合4本確認。次は register 系2本と、`Test-IsWindowsAppsPath`、その他親類 (`Get-OcgoPowerShellExecutable`, `Get-NatureRemoHiddenPowerShellExecutable`, k12) と、callers の呼び出し文脈。

## Phase 3: register 系、補助関数、callers 文脈

### ASSISTANT [2026-06-23 12:29:31 +09:00]

register 系は hook 系と**完全に逆の優先順序** (Get-Command 先 → `$PSHOME` fallback) になってる、これは面白い。次は親類 3 つと test 入口、dot-source 元、callers。

## Phase 4: 親類、test 入口、callers 文脈、dot-source

