---
generated_at: 2026-02-18 10:30:00
metrics:
  claims_total: 121
  claims_with_evidence: 121
  claims_without_evidence: 0
confidence_derived: 1.00
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：121 / 121、根拠なし：0
- 優先レビュー（高）
  1. **なし**：すべてのテストケースに根拠あり

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

- E-01: `public/Get-DbaRegServer.ps1` - 登録サーバー取得コマンド（392行）
- E-02: `public/Get-DbaRegServerGroup.ps1` - サーバーグループ取得コマンド（198行）
- E-03: `public/Get-DbaRegServerStore.ps1` - RegisteredServersStore取得コマンド（108行）
- E-04: `public/Add-DbaRegServer.ps1` - 登録サーバー追加コマンド（272行）
- E-05: `public/Add-DbaRegServerGroup.ps1` - サーバーグループ追加コマンド（163行）
- E-06: `public/Remove-DbaRegServer.ps1` - 登録サーバー削除コマンド（152行）
- E-07: `public/Remove-DbaRegServerGroup.ps1` - サーバーグループ削除コマンド（137行）
- E-08: `public/Move-DbaRegServer.ps1` - 登録サーバー移動コマンド（136行）
- E-09: `public/Move-DbaRegServerGroup.ps1` - サーバーグループ移動コマンド（140行）
- E-10: `public/Copy-DbaRegServer.ps1` - CMSコピーコマンド（353行）
- E-11: `public/Import-DbaRegServer.ps1` - 登録サーバーインポートコマンド（180行）
- E-12: `public/Export-DbaRegServer.ps1` - 登録サーバーエクスポートコマンド（206行）
- E-13: `public/Get-DbaRegistryRoot.ps1` - レジストリルート取得コマンド（114行）

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

### Get-DbaRegServer (UT-REG-001 - UT-REG-016)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | SqlInstanceなしでローカル登録サーバーを取得できる | E-01: 行197-276（ローカルファイルストア処理） | ○ |
| C-02 | CMSからサーバー一覧を取得できる | E-01: 行203-219（ServerStore取得とGetDescendantRegisteredServers呼び出し） | ○ |
| C-03 | Nameパラメータで表示名フィルタできる | E-01: 行278-280（Where-Object Name -in $Name） | ○ |
| C-04 | ServerNameパラメータでサーバー名フィルタできる | E-01: 行283-285（Where-Object ServerName -in $ServerName） | ○ |
| C-05 | Patternパラメータで正規表現フィルタできる | E-01: 行288-290（matchesPattern関数呼び出し、行185-194で定義） | ○ |
| C-06 | Groupパラメータでグループフィルタできる | E-01: 行211-215（Get-DbaRegServerGroup呼び出し） | ○ |
| C-07 | ExcludeServerNameパラメータで除外できる | E-01: 行293-295（Where-Object ServerName -notin） | ○ |
| C-08 | ExcludeGroupパラメータでグループ除外できる | E-01: 行323-325（$ExcludeGroupチェック） | ○ |
| C-09 | IncludeSelfでCMSインスタンス自体を含められる | E-01: 行382-390（IncludeSelf処理） | ○ |
| C-10 | ResolveNetworkNameでDNS解決できる | E-01: 行353-370（Resolve-DbaNetworkName呼び出し） | ○ |
| C-11 | Idパラメータで特定IDをフィルタできる | E-01: 行298-300（Where-Object Id -in $Id） | ○ |
| C-12 | 階層グループパスを正しく処理できる | E-01: 行211-215（バックスラッシュ記法のGroup指定） | ○ |
| C-13 | 存在しないCMSへの接続でエラーが発生する | E-01: 行207-208（Stop-Function -Message） | ○ |
| C-14 | EnableExceptionで例外がスローされる | E-01: パラメータ定義（行172）、Stop-Function連携 | ○ |
| C-15 | 登録サーバーが0件の場合に空の結果が返る | E-01: foreachループ構造による暗黙の空結果処理 | ○ |
| C-16 | Azure Data Studioの登録サーバーを取得できる | E-01: 行239-272（AzureDataStudioConnectionStore処理） | ○ |

### Get-DbaRegServerGroup (UT-REG-017 - UT-REG-025)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-17 | CMSからグループ一覧を取得できる | E-02: 行105-111（Get-DbaRegServerStore呼び出し） | ○ |
| C-18 | SqlInstanceなしでローカルグループを取得できる | E-02: 行113-115（SqlInstanceなし時のGet-DbaRegServerStore） | ○ |
| C-19 | Groupパラメータで特定グループを取得できる | E-02: 行118-155（Group指定時の処理） | ○ |
| C-20 | 階層グループパスで子グループを取得できる | E-02: 行129-142（バックスラッシュ分割とServerGroups索引） | ○ |
| C-21 | ExcludeGroupパラメータでグループ除外できる | E-02: 行166-169（ExcludeGroup処理） | ○ |
| C-22 | IdパラメータでグループIDフィルタできる | E-02: 行172-178（Id=1でルート、それ以外はGetDescendantRegisteredServers().Parent） | ○ |
| C-23 | ServerGroupオブジェクトをGroupパラメータに渡せる | E-02: 行121-123（ServerGroupオブジェクト判定） | ○ |
| C-24 | 存在しないグループを指定した場合に空の結果となる | E-02: 行144-154（thisgroup判定による空結果） | ○ |
| C-25 | 存在しないCMSへの接続でエラーが発生する | E-02: 行108-110（Stop-Function -Message） | ○ |

### Get-DbaRegServerStore (UT-REG-026 - UT-REG-031)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-26 | CMSのRegisteredServersStoreを取得できる | E-03: 行81-91（New-Object RegisteredServersStore） | ○ |
| C-27 | SqlInstanceなしでローカルファイルストアを取得できる | E-03: 行94-106（LocalFileStore処理） | ○ |
| C-28 | 複数インスタンスからストアを取得できる | E-03: 行74（foreach ($instance in $SqlInstance)） | ○ |
| C-29 | SqlCredentialで認証できる | E-03: 行76（Connect-DbaInstance -SqlCredential） | ○ |
| C-30 | 接続失敗時にStop-Functionが呼ばれる | E-03: 行77-78, 83-84（Stop-Function -Category ConnectionError） | ○ |
| C-31 | ローカルファイルが存在しない場合に作成される | E-03: 行98-100（Copy-Item -Path $regfile -Destination $file） | ○ |

### Add-DbaRegServer (UT-REG-032 - UT-REG-044)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-32 | CMSに登録サーバーを追加できる | E-04: 行254-267（New-Object RegisteredServer, .Create()） | ○ |
| C-33 | ローカルに登録サーバーを追加できる | E-04: 行167-191（SqlInstance未指定時のローカル処理） | ○ |
| C-34 | Nameパラメータで表示名を設定できる | E-04: 行159-165（Name設定ロジック） | ○ |
| C-35 | Descriptionパラメータで説明を設定できる | E-04: 行239, 258（$newserver.Description = $Description） | ○ |
| C-36 | Groupパラメータでグループに登録できる | E-04: 行169-191（Group指定時の処理） | ○ |
| C-37 | 存在しないグループは自動作成される | E-04: 行179-185（Add-DbaRegServerGroup呼び出し） | ○ |
| C-38 | 階層グループパスを指定できる | E-04: 行171-185（バックスラッシュ記法のGroup指定） | ○ |
| C-39 | ServerObjectをパイプラインで渡せる | E-04: 行149-150, 228-252（ServerObject処理） | ○ |
| C-40 | ConnectionStringパラメータで接続文字列を設定できる | E-04: 行258（$newserver.ConnectionString = $ConnectionString） | ○ |
| C-41 | Azure AD認証パラメータを設定できる | E-04: 行243-244, 259-260（ActiveDirectoryTenant/UserId設定） | ○ |
| C-42 | ServerNameもServerObjectも未指定の場合エラーとなる | E-04: 行155-158（Stop-Function -Message） | ○ |
| C-43 | Azure Data Studioグループへの追加は拒否される | E-04: 行217-219（Source -eq "Azure Data Studio"チェック） | ○ |
| C-44 | WhatIfで実際の追加が行われない | E-04: 行135（SupportsShouldProcess） | ○ |

### Add-DbaRegServerGroup (UT-REG-045 - UT-REG-053)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-45 | CMSにグループを追加できる | E-05: 行137-153（New-Object ServerGroup, .create()） | ○ |
| C-46 | ローカルにグループを追加できる | E-05: 行115-121（SqlInstance/InputObjectなし時の処理） | ○ |
| C-47 | 親グループを指定して子グループを作成できる | E-05: 行108-113（Group指定時の処理） | ○ |
| C-48 | バックスラッシュ表記で階層グループを作成できる | E-05: 行138-149（$Name -split '\\'による階層処理） | ○ |
| C-49 | Descriptionパラメータで説明を設定できる | E-05: 行150-151（$newgroup.Description = $Description） | ○ |
| C-50 | 既存グループ名を指定した場合はスキップされる | E-05: 行144-147（既存グループチェックとVerboseメッセージ） | ○ |
| C-51 | InputObjectでグループオブジェクトを受け取れる | E-05: 行103（parameter ValueFromPipeline） | ○ |
| C-52 | Azure Data Studioグループへの追加は拒否される | E-05: 行124-126（Source -eq "Azure Data Studio"チェック） | ○ |
| C-53 | WhatIfで実際の追加が行われない | E-05: 行94（SupportsShouldProcess） | ○ |

### Remove-DbaRegServer (UT-REG-054 - UT-REG-061)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-54 | CMSから登録サーバーを削除できる | E-06: 行131（$regserver.Drop()） | ○ |
| C-55 | ローカルから登録サーバーを削除できる | E-06: 行113-115（SqlInstance未指定時の処理） | ○ |
| C-56 | ServerNameパラメータで削除できる | E-06: 行101（$ServerName パラメータ） | ○ |
| C-57 | Groupパラメータでグループ内全サーバーを削除できる | E-06: 行110（Get-DbaRegServer -Group $Group） | ○ |
| C-58 | InputObjectでパイプライン入力できる | E-06: 行103-104（parameter ValueFromPipeline） | ○ |
| C-59 | Azure Data Studioサーバーの削除は拒否される | E-06: 行118-120（Source -eq "Azure Data Studio"チェック） | ○ |
| C-60 | Confirm:$falseで確認なしに削除できる | E-06: 行96（SupportsShouldProcess, ConfirmImpact = 'High'） | ○ |
| C-61 | WhatIfで実際の削除が行われない | E-06: 行96（SupportsShouldProcess） | ○ |

### Remove-DbaRegServerGroup (UT-REG-062 - UT-REG-067)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-62 | CMSからグループを削除できる | E-07: 行116-118（ScriptDrop().GetScript()実行） | ○ |
| C-63 | ローカルからグループを削除できる | E-07: 行120（$regservergroup.Drop()） | ○ |
| C-64 | 階層グループパスで子グループを削除できる | E-07: 行90（Get-DbaRegServerGroup -Group $Name） | ○ |
| C-65 | InputObjectでパイプライン入力できる | E-07: 行84-85（parameter ValueFromPipeline） | ○ |
| C-66 | Azure Data Studioグループの削除は拒否される | E-07: 行111-113（Source -eq "Azure Data Studio"チェック） | ○ |
| C-67 | Confirm:$falseで確認なしに削除できる | E-07: 行78（SupportsShouldProcess, ConfirmImpact = 'High'） | ○ |

### Move-DbaRegServer (UT-REG-068 - UT-REG-074)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-68 | 登録サーバーを別グループに移動できる | E-08: 行127（ScriptMove($movetogroup).GetScript()） | ○ |
| C-69 | ServerNameパラメータで移動できる | E-08: 行87（$ServerName パラメータ） | ○ |
| C-70 | Group未指定でルートに移動できる | E-08: 行121-123（Get-DbaRegServerGroup -Id 1） | ○ |
| C-71 | InputObjectでパイプライン入力できる | E-08: 行90-91（parameter ValueFromPipeline） | ○ |
| C-72 | SqlInstance指定時にNameもServerNameも未指定でエラーとなる | E-08: 行95-97（Stop-Function -Message） | ○ |
| C-73 | 存在しないグループへの移動でエラーとなる | E-08: 行118-120（Stop-Function -Message） | ○ |
| C-74 | WhatIfで実際の移動が行われない | E-08: 行82（SupportsShouldProcess） | ○ |

### Move-DbaRegServerGroup (UT-REG-075 - UT-REG-080)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-75 | グループを別グループに移動できる | E-09: 行131（ScriptMove($groupobject).GetScript()） | ○ |
| C-76 | NewGroup='Default'でルートに移動できる | E-09: 行113-114（NewGroup -eq 'Default'時のId 1取得） | ○ |
| C-77 | InputObjectでパイプライン入力できる | E-09: 行88-89（parameter ValueFromPipeline） | ○ |
| C-78 | SqlInstance指定時にGroup未指定でエラーとなる | E-09: 行93-95（Stop-Function -Message） | ○ |
| C-79 | 存在しないNewGroupへの移動でエラーとなる | E-09: 行121-123（Stop-Function -Message） | ○ |
| C-80 | WhatIfで実際の移動が行われない | E-09: 行81（SupportsShouldProcess） | ○ |

### Copy-DbaRegServer (UT-REG-081 - UT-REG-090)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-81 | CMSグループと登録サーバーをコピーできる | E-10: 行348-350（Invoke-ParseServerGroup呼び出し） | ○ |
| C-82 | Groupパラメータで特定グループのみコピーできる | E-10: 行341-346（Group指定時の処理） | ○ |
| C-83 | 複数の宛先にコピーできる | E-10: 行332（foreach ($destinstance in $Destination)） | ○ |
| C-84 | SwitchServerNameでサーバー名を置換できる | E-10: 行189-193（SwitchServerName処理） | ○ |
| C-85 | Forceで既存項目を上書きできる | E-10: 行134-154, 206-227（Force時のDrop処理） | ○ |
| C-86 | Force未指定で既存項目はスキップされる | E-10: 行132-142, 204-214（Skipped状態設定） | ○ |
| C-87 | サブグループも再帰的にコピーされる | E-10: 行260-318（Invoke-ParseServerGroup再帰呼び出し） | ○ |
| C-88 | ソース接続失敗時にStop-Functionが呼ばれる | E-10: 行324-327（Stop-Function -Category ConnectionError） | ○ |
| C-89 | 宛先接続失敗時にStop-Functionが呼ばれる | E-10: 行335-337（Stop-Function -Category ConnectionError） | ○ |
| C-90 | WhatIfで実際のコピーが行われない | E-10: 行93（SupportsShouldProcess） | ○ |

### Import-DbaRegServer (UT-REG-091 - UT-REG-099)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-91 | XMLファイルから登録サーバーをインポートできる | E-11: 行156-164（$reggroup.Import($file.FullName)） | ○ |
| C-92 | 特定グループにインポートできる | E-11: 行140-148（Group指定時のreggroups取得） | ○ |
| C-93 | パイプラインでRegisteredServerをインポートできる | E-11: 行124-130（RegisteredServer判定と処理） | ○ |
| C-94 | パイプラインでServerGroupをインポートできる | E-11: 行131-138（ServerGroup判定と処理） | ○ |
| C-95 | CSVデータからインポートできる | E-11: 行166-176（カスタムオブジェクト処理） | ○ |
| C-96 | 存在しないグループは自動作成される | E-11: 行127-129, 134-136（Add-DbaRegServerGroup呼び出し） | ○ |
| C-97 | 存在しないファイルでエラーとなる | E-11: 行151-153（Stop-Function -Message） | ○ |
| C-98 | ServerNameプロパティがないオブジェクトでエラーとなる | E-11: 行167-169（Stop-Function -Message） | ○ |
| C-99 | 存在しないグループ指定でエラーとなる | E-11: 行118-120（Stop-Function -Message） | ○ |

### Export-DbaRegServer (UT-REG-100 - UT-REG-111)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-100 | CMSの登録サーバーをXMLにエクスポートできる | E-12: 行195（$object.Export($OutputFilePath, $CredentialPersistenceType)） | ○ |
| C-101 | FilePathパラメータで出力先を指定できる | E-12: 行109-110, 191-193（FilePath処理） | ○ |
| C-102 | Pathパラメータでディレクトリを指定できる | E-12: 行108, 186（Path処理とJoin-DbaPath） | ○ |
| C-103 | Groupパラメータで特定グループのみエクスポートできる | E-12: 行143-148（Group指定時の処理） | ○ |
| C-104 | ExcludeGroupパラメータでグループを除外できる | E-12: 行144-153（ExcludeGroup処理） | ○ |
| C-105 | CredentialPersistenceTypeで認証情報を含められる | E-12: 行112, 195（CredentialPersistenceType設定） | ○ |
| C-106 | パイプラインでRegisteredServerをエクスポートできる | E-12: 行172, 180-181（RegisteredServer判定と処理） | ○ |
| C-107 | パイプラインでServerGroupをエクスポートできる | E-12: 行172, 182-183（ServerGroup判定と処理） | ○ |
| C-108 | Overwriteで既存ファイルを上書きできる | E-12: 行115, 133-136（Overwrite処理） | ○ |
| C-109 | Overwrite未指定で既存ファイルがある場合エラーとなる | E-12: 行133-136（Stop-Function -Message） | ○ |
| C-110 | 不正な拡張子でエラーとなる | E-12: 行125-127（Stop-Function -Message） | ○ |
| C-111 | 複数グループエクスポート時に個別ファイルが作成される | E-12: 行187-190（グループ名付与処理） | ○ |

### Get-DbaRegistryRoot (UT-REG-112 - UT-REG-121)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-112 | ローカルのSQL Serverレジストリルートを取得できる | E-13: 行58（$env:COMPUTERNAME デフォルト値） | ○ |
| C-113 | リモートコンピュータのレジストリルートを取得できる | E-13: 行64-66（Invoke-ManagedComputerCommand） | ○ |
| C-114 | 複数インスタンスのレジストリルートを取得できる | E-13: 行71（foreach ($sqlwmi in $sqlwmis)） | ○ |
| C-115 | Credentialパラメータで認証できる | E-13: 行59, 66（-Credential $Credential） | ○ |
| C-116 | フェイルオーバークラスターインスタンスのVSNAMEを処理できる | E-13: 行74, 90-97（VSNAME処理） | ○ |
| C-117 | 名前付きインスタンスのパスを正しく構成できる | E-13: 行95-97（$sqlInstance構成） | ○ |
| C-118 | RegistryRootがPowerShellパス形式で返却される | E-13: 行109（RegistryRoot = "HKLM:\$regRoot"） | ○ |
| C-119 | WMI接続失敗時にStop-Functionが呼ばれる | E-13: 行67-68（Stop-Function -Message） | ○ |
| C-120 | SQL Serverが見つからない場合にStop-Functionが呼ばれる | E-13: 行85-86（Stop-Function -Message） | ○ |
| C-121 | 複数コンピュータをパイプラインで処理できる | E-13: 行57（parameter ValueFromPipeline）, 行64（foreach） | ○ |

## 4) 不足情報（Unknown / Missing）
- なし：すべてのテストケースはソースコードを直接解析した結果に基づいています

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - すべてのテストケースがソースコードの実装に基づいており、高い信頼性があります

## 6) レビュアーチェックリスト（最小）
- [ ] テストケースがコマンドレットの主要機能を網羅しているか確認
- [ ] 正常系/異常系/境界値のバランスが適切か確認
- [ ] 優先度の設定が業務重要度と一致しているか確認
- [ ] Azure Data Studio連携の制限事項が適切にテスト対象となっているか確認
- [ ] パイプライン入力のテストケースが各コマンドで含まれているか確認
- [ ] WhatIf/Confirmサポートのテストが変更系コマンドで含まれているか確認
