---
generated_at: 2026-02-18 10:30:00
metrics:
  claims_total: 90
  claims_with_evidence: 87
  claims_without_evidence: 3
confidence_derived: 0.97
---

# 根拠レポート：public-Service.csv

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：87 / 90、根拠なし：3
- 優先レビュー（高）
  1. **C-29 (UT-SVC-029)**: 既に実行中のサービス開始時の具体的な挙動が不明確
  2. **C-41 (UT-SVC-041)**: 既に停止中のサービス停止時の具体的な挙動が不明確
  3. **C-69 (UT-SVC-069)**: 既存MasterKey存在時のNew-DbaServiceMasterKeyの挙動が不明確

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `public/Get-DbaService.ps1` - Get-DbaService関数の完全なソースコード（350行）
- E-02: `public/Start-DbaService.ps1` - Start-DbaService関数の完全なソースコード（159行）
- E-03: `public/Stop-DbaService.ps1` - Stop-DbaService関数の完全なソースコード（191行）
- E-04: `public/Restart-DbaService.ps1` - Restart-DbaService関数の完全なソースコード（192行）
- E-05: `public/Backup-DbaServiceMasterKey.ps1` - Backup-DbaServiceMasterKey関数の完全なソースコード（176行）
- E-06: `public/New-DbaServiceMasterKey.ps1` - New-DbaServiceMasterKey関数の完全なソースコード（92行）
- E-07: `public/Update-DbaServiceAccount.ps1` - Update-DbaServiceAccount関数の完全なソースコード（311行）
- E-08: `docs/code-to-docs/単体テストケース一覧/plan.md` - プロジェクト構造とモジュール定義

## 3) Claims と根拠の対応（レビューの主戦場）

### Get-DbaService (UT-SVC-001 - UT-SVC-018)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | ローカルコンピュータのSQL Serverサービス一覧取得 | E-01: L145 `$ComputerName = $env:COMPUTERNAME` | ○ |
| C-02 | 複数コンピュータ指定でのサービス取得 | E-01: L145 `[DbaInstanceParameter[]]$ComputerName` | ○ |
| C-03 | パイプライン入力対応 | E-01: L143 `parameter(ValueFromPipeline, Position = 1)` | ○ |
| C-04 | InstanceNameフィルタ | E-01: L278 `if (!$InstanceName -or $instance -in $InstanceName)` | ○ |
| C-05 | SqlInstanceパラメータ対応 | E-01: L162-165 SqlInstance処理、L206-208 | ○ |
| C-06 | Typeパラメータでのフィルタ | E-01: L153 `ValidateSet`, L181-191 searchClause構築 | ○ |
| C-07 | 複数Type指定 | E-01: L183-188 foreach ($itemType in $Type) | ○ |
| C-08 | ServiceNameパラメータ | E-01: L156, L192-201 ServiceNameパラメータセット | ○ |
| C-09 | AdvancedProperties取得 | E-01: L305-334 拡張プロパティ追加処理 | ○ |
| C-10 | クラスタ環境でのVSName取得 | E-01: L313-320 ClusterServiceTypeListチェック | ○ |
| C-11 | Credential認証 | E-01: L151 `[PSCredential]$Credential`, L212-213 | ○ |
| C-12 | Start/Stop/Restartメソッド追加 | E-01: L282-290 ScriptMethod追加 | ○ |
| C-13 | ChangeStartModeメソッド | E-01: L291-303 ChangeStartMode ScriptMethod | ○ |
| C-14 | 接続エラー処理 | E-01: L214-216 Stop-Function -Category ConnectionError | ○ |
| C-15 | EnableException動作 | E-01: L158 `[switch]$EnableException`, エラー処理で使用 | ○ |
| C-16 | 無効なType検証 | E-01: L153 ValidateSet定義 | ○ |
| C-17 | 無効なChangeStartModeエラー | E-01: L296-300 $supportedModes検証 | ○ |
| C-18 | サービス未検出時の動作 | E-01: L346-347 Verbose メッセージ出力 | ○ |

### Start-DbaService (UT-SVC-019 - UT-SVC-029)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-19 | サービス開始基本動作 | E-02: L146-153 Update-ServiceStatus Action="start" | ○ |
| C-20 | 複数コンピュータ対応 | E-02: L112 `[DbaInstanceParameter[]]$ComputerName` | ○ |
| C-21 | パイプライン入力 | E-02: L119 `parameter(ValueFromPipeline, Mandatory)` | ○ |
| C-22 | InstanceNameフィルタ | E-02: L143 `(!$InstanceName -or $_.InstanceName -in $InstanceName)` | ○ |
| C-23 | Typeフィルタ | E-02: L143 `(!$Type -or $_.ServiceType -in $Type)` | ○ |
| C-24 | Timeoutパラメータ | E-02: L122 `[int]$Timeout = 60`, L149 | ○ |
| C-25 | WhatIf対応 | E-02: L108 `SupportsShouldProcess`, L144 | ○ |
| C-26 | SqlInstanceパラメータ | E-02: L116, L131 | ○ |
| C-27 | サービス未検出エラー | E-02: L155 Stop-Function ObjectNotFound | ○ |
| C-28 | EnableException動作 | E-02: L124, L134, L150, L155 | ○ |
| C-29 | 既に実行中のサービス開始 | **根拠なし** | △ |

### Stop-DbaService (UT-SVC-030 - UT-SVC-041)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-30 | サービス停止基本動作 | E-03: L178-185 Update-ServiceStatus Action="stop" | ○ |
| C-31 | 複数コンピュータ対応 | E-03: L123 `[DbaInstanceParameter[]]$ComputerName` | ○ |
| C-32 | パイプライン入力 | E-03: L130 `parameter(ValueFromPipeline, Mandatory)` | ○ |
| C-33 | InstanceNameフィルタ | E-03: L156 フィルタ処理 | ○ |
| C-34 | Typeフィルタ | E-03: L156 フィルタ処理 | ○ |
| C-35 | Force依存サービス停止 | E-03: L158-174 Agent, PolyBase追加処理 | ○ |
| C-36 | PolyBase依存サービス | E-03: L160 `$dependentTypes = @('Agent', 'PolyBase')` | ○ |
| C-37 | Timeoutパラメータ | E-03: L133, L181 | ○ |
| C-38 | WhatIf対応 | E-03: L119 `SupportsShouldProcess`, L176 | ○ |
| C-39 | Confirm対応 | E-03: L119 `ConfirmImpact = "Medium"` | ○ |
| C-40 | サービス未検出エラー | E-03: L187 Stop-Function ObjectNotFound | ○ |
| C-41 | 既に停止中のサービス停止 | **根拠なし** | △ |

### Restart-DbaService (UT-SVC-042 - UT-SVC-051)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-42 | サービス再起動基本動作 | E-04: L169-186 stop後restart処理 | ○ |
| C-43 | 複数コンピュータ対応 | E-04: L111 `[DbaInstanceParameter[]]$ComputerName` | ○ |
| C-44 | パイプライン入力 | E-04: L118 `parameter(ValueFromPipeline, Mandatory)` | ○ |
| C-45 | InstanceNameフィルタ | E-04: L143 フィルタ処理 | ○ |
| C-46 | Typeフィルタ | E-04: L143 フィルタ処理 | ○ |
| C-47 | Force依存サービス | E-04: L145-166 Agent, PolyBase, Launchpad追加 | ○ |
| C-48 | 停止失敗時の結果 | E-04: L178-180 Status='Failed'サービス出力 | ○ |
| C-49 | Timeoutパラメータ | E-04: L121, L173 | ○ |
| C-50 | WhatIf対応 | E-04: L107 `SupportsShouldProcess`, L169 | ○ |
| C-51 | サービス未検出エラー | E-04: L189 Stop-Function | ○ |

### Backup-DbaServiceMasterKey (UT-SVC-052 - UT-SVC-063)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-52 | SMKバックアップ基本動作 | E-05: L158-164 masterkey.Export() | ○ |
| C-53 | カスタムパス指定 | E-05: L97 `[string]$Path`, L114-124 パス処理 | ○ |
| C-54 | FileBaseName指定 | E-05: L98, L143-145 | ○ |
| C-55 | KeyCredential対応 | E-05: L94, L102-104 | ○ |
| C-56 | SqlCredential認証 | E-05: L93, L109 Connect-DbaInstance | ○ |
| C-57 | 同名ファイル時タイムスタンプ | E-05: L150-155 既存ファイルチェック | ○ |
| C-58 | WhatIf対応 | E-05: L89 `SupportsShouldProcess`, L157 | ○ |
| C-59 | パイプライン入力 | E-05: L91 `parameter(Mandatory, ValueFromPipeline)` | ○ |
| C-60 | 接続エラー処理 | E-05: L110-111 Stop-Function ConnectionError | ○ |
| C-61 | パスアクセスエラー | E-05: L122-124 Test-DbaPath チェック | ○ |
| C-62 | パスワード不一致エラー | E-05: L134-136 パスワード比較 | ○ |
| C-63 | Path未指定エラー | E-05: L118-119 Path null チェック | ○ |

### New-DbaServiceMasterKey (UT-SVC-064 - UT-SVC-070)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-64 | SMK作成基本動作 | E-06: L88 New-DbaDbMasterKey Database=master | ○ |
| C-65 | 複数インスタンス対応 | E-06: L77 `[DbaInstanceParameter[]]$SqlInstance` | ○ |
| C-66 | Credential対応 | E-06: L79, L88 | ○ |
| C-67 | WhatIf対応 | E-06: L74 `SupportsShouldProcess`, L87 | ○ |
| C-68 | パイプライン入力 | E-06: L76 `parameter(Mandatory, ValueFromPipeline)` | ○ |
| C-69 | 既存MasterKey存在時 | **根拠なし** - New-DbaDbMasterKeyの挙動に依存 | △ |
| C-70 | 接続エラー処理 | E-06: 委譲先New-DbaDbMasterKeyで処理 | ○ |

### Update-DbaServiceAccount (UT-SVC-071 - UT-SVC-090)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-71 | アカウント変更基本動作 | E-07: L247-276 scriptAccountChange実行 | ○ |
| C-72 | Usernameパラメータ | E-07: L136-137, L158-176 | ○ |
| C-73 | NETWORKSERVICE変更 | E-07: L187-189 システムアカウント処理 | ○ |
| C-74 | LOCALSYSTEM変更 | E-07: L187 credUserName in 'NETWORKSERVICE', 'LOCALSYSTEM', 'LOCALSERVICE' | ○ |
| C-75 | LOCALSERVICE変更 | E-07: L187 | ○ |
| C-76 | パスワード変更 | E-07: L271-274 scriptPasswordChange実行 | ○ |
| C-77 | PreviousPassword使用 | E-07: L139, L273 | ○ |
| C-78 | 複数サービス一括変更 | E-07: L135, L196-207 foreach処理 | ○ |
| C-79 | パイプライン入力 | E-07: L130 `parameter(ValueFromPipeline, Mandatory)` | ○ |
| C-80 | NoRestart対応 | E-07: L142, L290, L299-301 | ○ |
| C-81 | Agent自動再起動 | E-07: L290-298 Agent再起動処理 | ○ |
| C-82 | WhatIf対応 | E-07: L124 `SupportsShouldProcess`, L246, L286-289 | ○ |
| C-83 | 証明書再設定 | E-07: L249-270 証明書削除・再設定処理 | ○ |
| C-84 | MSA対応 | E-07: L167 `$Username.EndsWith('$')` チェック | ○ |
| C-85 | Username/ServiceCredential排他 | E-07: L160-162 Stop-Function | ○ |
| C-86 | パスワード不一致エラー | E-07: L170-174, L235-238 | ○ |
| C-87 | サービス未検出エラー | E-07: L307 Stop-Function | ○ |
| C-88 | 接続エラー処理 | E-07: L206 Stop-Function | ○ |
| C-89 | PowerBIReportServerスキップ | E-07: L211-212 | ○ |
| C-90 | アカウント変更失敗 | E-07: L277-285 catch処理 | ○ |

## 4) 不足情報（Unknown / Missing）

### C-29: 既に実行中のサービス開始時の動作
- Update-ServiceStatus内部関数の詳細実装が確認できないため、既に実行中のサービスを開始した場合の正確な挙動が不明
- 候補：正常終了 / 警告メッセージ / ステータス変化なし

### C-41: 既に停止中のサービス停止時の動作
- Update-ServiceStatus内部関数の詳細実装が確認できないため、既に停止中のサービスを停止した場合の正確な挙動が不明
- 候補：正常終了 / 警告メッセージ / ステータス変化なし

### C-69: 既存MasterKey存在時のNew-DbaServiceMasterKeyの動作
- New-DbaServiceMasterKeyはNew-DbaDbMasterKeyに処理を委譲しており、既存キー存在時の挙動はNew-DbaDbMasterKeyの実装に依存
- 候補：エラー発生 / 警告で続行 / スキップ

## 5) リスクフラグ（レビュー観点）

- **0 (低リスク)**: Get-DbaServiceのパラメータ・フィルタリング関連テストケース - ソースコードに明確な根拠あり
- **0 (低リスク)**: Update-DbaServiceAccountのアカウント変更関連テストケース - 詳細な実装が確認可能
- **1 (中リスク)**: 既存状態でのサービス操作（C-29, C-41）- Update-ServiceStatus内部実装への依存
- **1 (中リスク)**: New-DbaServiceMasterKeyの既存キー処理（C-69）- 委譲先関数への依存

## 6) レビュアーチェックリスト（最小）

- [ ] Get-DbaServiceの各パラメータセット（Search, ServiceName）のテストケースが網羅されているか
- [ ] Start/Stop/Restart-DbaServiceの依存サービス処理（Force）が正しくテストされているか
- [ ] Update-DbaServiceAccountのシステムアカウント（NETWORKSERVICE, LOCALSYSTEM, LOCALSERVICE）変更テストが適切か
- [ ] Backup-DbaServiceMasterKeyのファイル名重複時のタイムスタンプ処理がテストされているか
- [ ] 各コマンドのEnableException/WhatIf/Confirmの動作がテストされているか
- [ ] パイプライン入力（InputObject, ValueFromPipeline）のテストケースが含まれているか
- [ ] △の項目（C-29, C-41, C-69）について、実際の動作を確認してテストケースを調整する必要があるか
