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

# 根拠レポート：public-Login 単体テストケース一覧

## 本レポートについて

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

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

1. **根拠の有無確認**：各テストケースに対して、ソースコードの該当関数・パラメータが実在するか
2. **根拠との整合性**：テストケースの期待結果がソースコードの実装と矛盾していないか
3. **網羅性**：各コマンドの主要なパラメータと機能をカバーしているか

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：112 / 112、根拠なし：0
- 優先レビュー（高）
  - すべてのテストケースはソースコードに基づいて生成されています
  - 特に根拠不足の項目はありません

## 2) 参照した情報（Evidence一覧）
> 以下のソースファイルを解析してテストケースを生成しました。

- E-01: `public/Get-DbaLogin.ps1` - ログイン取得コマンド（329行）
- E-02: `public/New-DbaLogin.ps1` - ログイン作成コマンド（613行）
- E-03: `public/Remove-DbaLogin.ps1` - ログイン削除コマンド（151行）
- E-04: `public/Set-DbaLogin.ps1` - ログイン設定変更コマンド（568行）
- E-05: `public/Find-DbaLoginInGroup.ps1` - ADグループ内ユーザー検索コマンド（174行）
- E-06: `public/Test-DbaLoginPassword.ps1` - 弱いパスワード検出コマンド（192行）
- E-07: `public/Sync-DbaLoginPermission.ps1` - 権限同期コマンド（177行）
- E-08: `public/Sync-DbaLoginPassword.ps1` - パスワード同期コマンド（236行）
- E-09: `public/Copy-DbaLogin.ps1` - ログインコピーコマンド（591行）
- E-10: `public/Export-DbaLogin.ps1` - ログインエクスポートコマンド（623行）
- E-11: `public/Rename-DbaLogin.ps1` - ログインリネームコマンド（201行）

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

### Get-DbaLogin (UT-LOG-001 ~ UT-LOG-016)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | SqlInstanceパラメータが必須 | E-01 L195-196 `[parameter(Mandatory, ValueFromPipeline)]` | ○ |
| C-02 | Loginパラメータでフィルタリング可能 | E-01 L236-238 `if ($Login) { $serverLogins = $serverLogins \| Where-Object Name -in $Login }` | ○ |
| C-03 | ExcludeLoginパラメータで除外可能 | E-01 L262-263 `if ($ExcludeLogin) { $serverLogins = $serverLogins \| Where-Object Name -NotIn $ExcludeLogin }` | ○ |
| C-04 | ExcludeSystemLoginでシステムログイン除外 | E-01 L240-241 `if ($ExcludeSystemLogin) { $serverLogins = $serverLogins \| Where-Object IsSystemObject -eq $false }` | ○ |
| C-05 | Type=Windowsでフィルタリング | E-01 L244-245 `if ($Type -eq 'Windows') { $serverLogins = $serverLogins \| Where-Object LoginType -in @('WindowsUser', 'WindowsGroup') }` | ○ |
| C-06 | Type=SQLでフィルタリング | E-01 L248-249 `if ($Type -eq 'SQL') { $serverLogins = $serverLogins \| Where-Object LoginType -eq 'SqlLogin' }` | ○ |
| C-07 | Lockedスイッチで絞り込み | E-01 L276-277 `if ($Locked) { $serverLogins = $serverLogins \| Where-Object IsLocked }` | ○ |
| C-08 | Disabledスイッチで絞り込み | E-01 L280-281 `if ($Disabled) { $serverLogins = $serverLogins \| Where-Object IsDisabled }` | ○ |
| C-09 | IncludeFilterでパターンマッチ | E-01 L252-260 パターンマッチングロジック | ○ |
| C-10 | ExcludeFilterでパターン除外 | E-01 L266-269 除外フィルタロジック | ○ |
| C-11 | Detailedスイッチで詳細情報取得 | E-01 L305-317 LOGINPROPERTY関数を使用した詳細情報取得 | ○ |
| C-12 | HasAccessでフィルタリング | E-01 L272-273 `if ($HasAccess) { $serverLogins = $serverLogins \| Where-Object HasAccess }` | ○ |
| C-13 | MustChangePasswordでフィルタリング | E-01 L284-285 `if ($MustChangePassword) { $serverLogins = $serverLogins \| Where-Object MustChangePassword }` | ○ |

### New-DbaLogin (UT-LOG-017 ~ UT-LOG-033)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-14 | SQLログイン作成 | E-02 L435-508 Login作成ロジック | ○ |
| C-15 | Windowsログイン作成 | E-02 L360-361 `elseif ($loginItem.IndexOf('\') -eq -1) { $loginType = 'SqlLogin' } else { $loginType = 'WindowsUser' }` | ○ |
| C-16 | HashedPasswordでの作成 | E-02 L259-263 HashedPassword処理 | ○ |
| C-17 | パイプラインでのログインコピー | E-02 L281-288 InputObject処理 | ○ |
| C-18 | LoginRenameHashtableでリネーム | E-02 L406-408 `if ($LoginRenameHashtable.Keys -contains $loginName) { $loginName = $LoginRenameHashtable[$loginName] }` | ○ |
| C-19 | DefaultDatabase設定 | E-02 L371-373 DefaultDatabase処理 | ○ |
| C-20 | PasswordPolicyEnforced設定 | E-02 L377-379 PasswordPolicyEnforced処理 | ○ |
| C-21 | PasswordExpirationEnabled設定 | E-02 L377-379 PasswordExpirationEnabled処理 | ○ |
| C-22 | Disabledスイッチ | E-02 L399-401 Disabled処理 | ○ |
| C-23 | Forceで既存ログイン置換 | E-02 L417-429 Force処理とDrop | ○ |
| C-24 | NewSidでSID生成 | E-02 L440-443 NewSid処理 | ○ |
| C-25 | ExternalProviderでAzure AD | E-02 L359 ExternalUser処理 | ○ |
| C-26 | Loginなしでエラー | E-02 L270-273 パラメータ検証 | ○ |
| C-27 | PasswordMustChangeにパスワード必要 | E-02 L275-278 パラメータ検証 | ○ |

### Remove-DbaLogin (UT-LOG-034 ~ UT-LOG-039)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-28 | ログイン削除 | E-03 L127 `$currentlogin.Drop()` | ○ |
| C-29 | 複数ログイン削除 | E-03 L106 配列対応 | ○ |
| C-30 | パイプライン入力 | E-03 L89 `[Parameter(ValueFromPipeline, Mandatory, ParameterSetName = "Logins")]` | ○ |
| C-31 | Forceでセッション終了 | E-03 L123-125 Stop-DbaProcess呼び出し | ○ |
| C-32 | 存在しないログインの警告 | E-03 L110-113 警告メッセージ出力 | ○ |

### Set-DbaLogin (UT-LOG-040 ~ UT-LOG-058)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-33 | Enable/Disable切替 | E-04 L386-410 Enable/Disable処理 | ○ |
| C-34 | パスワード変更 | E-04 L495-515 ChangePassword処理 | ○ |
| C-35 | PasswordHash設定 | E-04 L518-536 ALTER LOGIN WITH PASSWORD HASHED | ○ |
| C-36 | Unlockでロック解除 | E-04 L333-366 Unlock処理（ポリシー操作） | ○ |
| C-37 | NewNameでリネーム | E-04 L370-383 Rename処理 | ○ |
| C-38 | DenyLogin/GrantLogin | E-04 L414-429 DenyWindowsLogin操作 | ○ |
| C-39 | AddRole/RemoveRole | E-04 L456-478 ロール追加/削除 | ○ |
| C-40 | DefaultDatabase変更 | E-04 L482-488 DefaultDatabase設定 | ○ |
| C-41 | パラメータ検証（排他） | E-04 L270-288 複数の検証ロジック | ○ |

### Find-DbaLoginInGroup (UT-LOG-059 ~ UT-LOG-063)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-42 | ADグループ展開 | E-05 L87-141 Get-AllLogins再帰関数 | ○ |
| C-43 | 特定ユーザー検索 | E-05 L166 `$res = $ADGroupOut \| Where-Object { $Login -contains $_.Login }` | ○ |
| C-44 | ネストグループ対応 | E-05 L130-135 再帰呼び出し | ○ |

### Test-DbaLoginPassword (UT-LOG-064 ~ UT-LOG-069)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-45 | 空パスワード検出 | E-06 L123 `$CheckPasses = "", "@@Name"` | ○ |
| C-46 | ユーザー名=パスワード検出 | E-06 L123 `@@Name`プレースホルダー使用 | ○ |
| C-47 | 辞書パスワードチェック | E-06 L124-126 Dictionary追加処理 | ○ |
| C-48 | PWDCOMPARE関数使用 | E-06 L147 `PWDCOMPARE(REPLACE(WeakPassword.WeakPwd,'@@Name',SysLogins.name),password_hash) = 1` | ○ |

### Sync-DbaLoginPermission (UT-LOG-070 ~ UT-LOG-075)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-49 | 権限同期 | E-07 L163 `Update-SqlPermission` 呼び出し | ○ |
| C-50 | Login/ExcludeLoginフィルタ | E-07 L99-100 パラメータ定義 | ○ |
| C-51 | 存在しないログインのスキップ | E-07 L146-149 存在チェック | ○ |

### Sync-DbaLoginPassword (UT-LOG-076 ~ UT-LOG-081)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-52 | パスワードハッシュ同期 | E-08 L196-210 Get-LoginPasswordHash + Set-DbaLogin | ○ |
| C-53 | SQLログインのみ処理 | E-08 L149, L157 `Where-Object LoginType -eq "SqlLogin"` | ○ |
| C-54 | 存在しないログインのスキップ | E-08 L182-185 存在チェック | ○ |

### Copy-DbaLogin (UT-LOG-082 ~ UT-LOG-095)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-55 | ログインコピー | E-09 L482-504 New-DbaLogin呼び出し | ○ |
| C-56 | Force/KillActiveConnection | E-09 L450-457 セッション終了とDrop | ○ |
| C-57 | LoginRenameHashtable | E-09 L232-236 リネーム処理 | ○ |
| C-58 | NewSid生成 | E-09 L214 パラメータ定義 | ○ |
| C-59 | OutFileでスクリプト出力 | E-09 L537-539 Export-DbaLogin呼び出し | ○ |
| C-60 | バージョンチェック | E-09 L552-558 バージョン互換性検証 | ○ |

### Export-DbaLogin (UT-LOG-096 ~ UT-LOG-107)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-61 | T-SQLスクリプト生成 | E-10 L364-423 CREATE LOGIN文生成 | ○ |
| C-62 | ExcludePassword | E-10 L366-399 ハッシュまたはプレースホルダー | ○ |
| C-63 | DefaultDatabaseオーバーライド | E-10 L345-349 DefaultDatabase処理 | ○ |
| C-64 | ObjectLevelエクスポート | E-10 L510-531 Export-DbaUser呼び出し | ○ |
| C-65 | DestinationVersion構文変更 | E-10 L437-442 バージョン別構文 | ○ |

### Rename-DbaLogin (UT-LOG-108 ~ UT-LOG-112)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-66 | ログインリネーム | E-11 L124 `$null = $currentLogin.Rename($NewLogin)` | ○ |
| C-67 | ForceでDBユーザーも更新 | E-11 L153-195 データベースユーザーリネーム | ○ |
| C-68 | ロールバック処理 | E-11 L176-191 失敗時のロールバック | ○ |

## 4) 不足情報（Unknown / Missing）
- なし - すべてのテストケースは実在するソースコードに基づいています

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - すべてのテストケースがソースコードに直接対応

## 6) レビュアーチェックリスト（最小）
- [ ] 各コマンドの主要パラメータがテストケースで網羅されているか確認
- [ ] 正常系・異常系・境界値のバランスが適切か確認
- [ ] 優先度の設定が妥当か確認（高：セキュリティ/コア機能、中：一般機能、低：オプション機能）
- [ ] テストケース名と期待結果が明確で理解しやすいか確認
- [ ] SQLバージョン互換性に関するテストが含まれているか確認（SQL Server 2000対応）
