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

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

## 本レポートについて

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

### チェック方法
以下の観点でテストケースの内容（Claim：主張）を検証しています：

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

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

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

---

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

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `public/Get-DbaLinkedServer.ps1` - リンクサーバー取得コマンド
- E-02: `public/Get-DbaLinkedServerLogin.ps1` - リンクサーバーログイン取得コマンド
- E-03: `public/New-DbaLinkedServer.ps1` - リンクサーバー作成コマンド
- E-04: `public/New-DbaLinkedServerLogin.ps1` - リンクサーバーログイン作成コマンド
- E-05: `public/Remove-DbaLinkedServer.ps1` - リンクサーバー削除コマンド
- E-06: `public/Remove-DbaLinkedServerLogin.ps1` - リンクサーバーログイン削除コマンド
- E-07: `public/Copy-DbaLinkedServer.ps1` - リンクサーバーコピーコマンド
- E-08: `public/Export-DbaLinkedServer.ps1` - リンクサーバーエクスポートコマンド
- E-09: `public/Test-DbaLinkedServerConnection.ps1` - リンクサーバー接続テストコマンド

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

### Get-DbaLinkedServer (UT-LNK-001 〜 UT-LNK-007)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | 全てのリンクサーバーを取得できること | E-01: line 102 `$server.LinkedServers` | ○ |
| C-02 | LinkedServerパラメータでフィルタリングできること | E-01: line 104-106 `Where-Object { $_.Name -in $LinkedServer }` | ○ |
| C-03 | ExcludeLinkedServerパラメータで除外できること | E-01: line 107-109 `Where-Object { $_.Name -notin $ExcludeLinkedServer }` | ○ |
| C-04 | パイプラインからの入力を受け付けること | E-01: line 87 `[Parameter(Mandatory, ValueFromPipeline)]` | ○ |
| C-05 | 接続失敗時にエラーが発生すること | E-01: line 98-100 `Stop-Function -Message "Failure" -Category ConnectionError` | ○ |
| C-06 | リンクサーバー0件時に空結果が返却されること | E-01: line 111 `foreach ($ls in $lservers)` - 空の場合は何も出力しない | ○ |
| C-07 | 出力オブジェクトにカスタムプロパティが追加されること | E-01: line 112-116 `Add-Member -Force` | ○ |

### Get-DbaLinkedServerLogin (UT-LNK-008 〜 UT-LNK-014)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-08 | リンクサーバーログインを取得できること | E-02: line 135 `$ls.LinkedServerLogins` | ○ |
| C-09 | LocalLoginパラメータでフィルタリングできること | E-02: line 137-138 `Where-Object { $_.Name -in $LocalLogin }` | ○ |
| C-10 | ExcludeLocalLoginパラメータで除外できること | E-02: line 141-143 `Where-Object { $_.Name -notin $ExcludeLocalLogin }` | ○ |
| C-11 | Get-DbaLinkedServerからのパイプライン入力を受け付けること | E-02: line 131-132 `$obj -is [Microsoft.SqlServer.Management.Smo.LinkedServer]` | ○ |
| C-12 | Connect-DbaInstanceからのパイプライン入力を受け付けること | E-02: line 123-129 `$obj -is [Microsoft.SqlServer.Management.Smo.Server]` | ○ |
| C-13 | LinkedServerなしでSqlInstanceを指定した場合エラーになること | E-02: line 114-116 `Stop-Function -Message "LinkedServer is required"` | ○ |
| C-14 | ログインマッピング0件時に空結果が返却されること | E-02: line 145 `foreach ($lsLogin in $linkedServerLogins)` | ○ |

### New-DbaLinkedServer (UT-LNK-015 〜 UT-LNK-025)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-15 | 新しいリンクサーバーを作成できること | E-03: line 181-207 `New-Object ... $newLinkedServer.Create()` | ○ |
| C-16 | パイプラインからServerオブジェクトを受け付けること | E-03: line 148-149 `[parameter(ValueFromPipeline)]` | ○ |
| C-17 | SecurityContext=CurrentSecurityContextで作成できること | E-03: line 214-215 `@useself = N'True'` | ○ |
| C-18 | SecurityContext=SpecifiedSecurityContextで作成できること | E-03: line 216-217 `@rmtuser, @rmtpassword` | ○ |
| C-19 | SecurityContext=NoConnectionで作成できること | E-03: line 210-211 `sp_droplinkedsrvlogin` | ○ |
| C-20 | オプションパラメータを設定できること | E-03: line 195-205 `Test-Bound Location/ProviderString/Catalog` | ○ |
| C-21 | LinkedServerパラメータなしでエラーになること | E-03: line 154-157 `Stop-Function -Message "LinkedServer is required"` | ○ |
| C-22 | 同名のリンクサーバー存在時にスキップされること | E-03: line 175-177 `Stop-Function -Message "already exists"` | ○ |
| C-23 | SpecifiedSecurityContextでRemoteUserなしの場合エラーになること | E-03: line 160-162 `Stop-Function ... "SecurityContextRemoteUser is required"` | ○ |
| C-24 | SpecifiedSecurityContextでRemoteUserPasswordなしの場合エラーになること | E-03: line 163-166 `Stop-Function ... "SecurityContextRemoteUserPassword is required"` | ○ |
| C-25 | WhatIfパラメータで実際の作成をスキップできること | E-03: line 133 `[CmdletBinding(SupportsShouldProcess]` | ○ |

### New-DbaLinkedServerLogin (UT-LNK-026 〜 UT-LNK-032)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-26 | 新しいリンクサーバーログインを作成できること | E-04: line 131-148 `New-Object ... $newLinkedServerLogin.Create()` | ○ |
| C-27 | Impersonateフラグを有効にしてログインを作成できること | E-04: line 146 `$newLinkedServerLogin.Impersonate = [boolean]$Impersonate` | ○ |
| C-28 | パイプラインからLinkedServerオブジェクトを受け付けること | E-04: line 108-109 `[parameter(ValueFromPipeline)]` | ○ |
| C-29 | SqlInstanceとLinkedServerなしでエラーになること | E-04: line 113-116 `Stop-Function -Message "LinkedServer is required"` | ○ |
| C-30 | LocalLoginなしでエラーになること | E-04: line 118-121 `Stop-Function -Message "LocalLogin is required"` | ○ |
| C-31 | 作成失敗時にエラーハンドリングされること | E-04: line 152-154 `Stop-Function -Message "Failure"` | ○ |
| C-32 | WhatIfパラメータで実際の作成をスキップできること | E-04: line 99 `[CmdletBinding(SupportsShouldProcess]` | ○ |

### Remove-DbaLinkedServer (UT-LNK-033 〜 UT-LNK-040)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-33 | リンクサーバーを削除できること | E-05: line 130 `$lsToDrop.Drop([boolean]$Force)` | ○ |
| C-34 | Forceパラメータでログインも含めて削除できること | E-05: line 130 `$lsToDrop.Drop([boolean]$Force)` | ○ |
| C-35 | パイプラインからLinkedServerオブジェクトを受け付けること | E-05: line 119-121 `$obj -is [Microsoft.SqlServer.Management.Smo.LinkedServer]` | ○ |
| C-36 | Connect-DbaInstanceからのパイプライン入力を受け付けること | E-05: line 104-117 `$obj -is [Microsoft.SqlServer.Management.Smo.Server]` | ○ |
| C-37 | LinkedServerパラメータなしでServerオブジェクトを渡した場合エラーになること | E-05: line 106-108 `Stop-Function -Message "LinkedServer is required"` | ○ |
| C-38 | 存在しないリンクサーバーを削除しようとした場合エラーになること | E-05: line 112-114 `Stop-Function -Message "does not exist"` | ○ |
| C-39 | 削除失敗時にエラーハンドリングされること | E-05: line 131-133 `Stop-Function -Message "Failure"` | ○ |
| C-40 | WhatIfパラメータで実際の削除をスキップできること | E-05: line 83 `[CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'High')]` | ○ |

### Remove-DbaLinkedServerLogin (UT-LNK-041 〜 UT-LNK-048)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-41 | リンクサーバーログインを削除できること | E-06: line 141 `$lsLoginToDrop.Drop()` | ○ |
| C-42 | パイプラインからServerオブジェクトを受け付けること | E-06: line 115-121 `$object -is [Microsoft.SqlServer.Management.Smo.Server]` | ○ |
| C-43 | パイプラインからLinkedServerオブジェクトを受け付けること | E-06: line 122-123 `$object -is [Microsoft.SqlServer.Management.Smo.LinkedServer]` | ○ |
| C-44 | パイプラインからLinkedServerLoginオブジェクトを受け付けること | E-06: line 124-125 `$object -is [Microsoft.SqlServer.Management.Smo.LinkedServerLogin]` | ○ |
| C-45 | SqlInstanceとLinkedServerなしでエラーになること | E-06: line 104-107 `Stop-Function -Message "LinkedServer is required"` | ○ |
| C-46 | ServerオブジェクトとLinkedServerなしでエラーになること | E-06: line 117-119 `Stop-Function -Message "LinkedServer is required"` | ○ |
| C-47 | 削除失敗時にStatus='Failure'が返却されること | E-06: line 150-159 `Status = "Failure"` | ○ |
| C-48 | 出力オブジェクトに正しいプロパティが含まれること | E-06: line 142-149 `[PSCustomObject]@{...}` | ○ |

### Copy-DbaLinkedServer (UT-LNK-049 〜 UT-LNK-062)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-49 | リンクサーバーをコピーできること | E-07: line 238-259 `$destServer.Query($sql)` | ○ |
| C-50 | 特定のリンクサーバーのみをコピーできること | E-07: line 160-161 `Where-Object Name -In $LinkedServer` | ○ |
| C-51 | 特定のリンクサーバーを除外してコピーできること | E-07: line 163-164 `Where-Object Name -NotIn $ExcludeLinkedServer` | ○ |
| C-52 | Forceパラメータで既存のリンクサーバーを上書きできること | E-07: line 215-232 `Drop($true)` | ○ |
| C-53 | ExcludePasswordパラメータでパスワードなしでコピーできること | E-07: line 145-153 `if ($ExcludePassword)` | ○ |
| C-54 | UpgradeSqlClientパラメータでプロバイダをアップグレードできること | E-07: line 241-246 `$sql -replace ("sqlncli[0-9]+"` | ○ |
| C-55 | 複数の宛先にコピーできること | E-07: line 119 `[DbaInstanceParameter[]]$Destination` | ○ |
| C-56 | Windowsでない場合エラーになること | E-07: line 130-133 `Stop-Function -Message "only supported on Windows"` | ○ |
| C-57 | 同名のリンクサーバー存在時にスキップされること | E-07: line 206-214 `Status = "Skipped", Notes = "Already exists"` | ○ |
| C-58 | 宛先にプロバイダが存在しない場合スキップされること | E-07: line 194-203 `Status = "Skipped", Notes = "Missing provider"` | ○ |
| C-59 | 接続失敗時にエラーが発生すること | E-07: line 337-338 `Stop-Function -Category ConnectionError` | ○ |
| C-60 | sysadmin権限がない場合エラーになること | E-07: line 340-342 `Stop-Function -Message "Not a sysadmin"` | ○ |
| C-61 | ログイン認証情報もコピーされること | E-07: line 269-296 `$currentlogin.SetRemotePassword` | ○ |
| C-62 | repl_distributorはスキップされること | E-07: line 218-220 `repl_distributor cannot be dropped` | ○ |

### Export-DbaLinkedServer (UT-LNK-063 〜 UT-LNK-073)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-63 | リンクサーバーをT-SQLスクリプトとしてエクスポートできること | E-08: line 167-191 `$ls.Script()` | ○ |
| C-64 | ExcludePasswordパラメータでパスワードなしでエクスポートできること | E-08: line 166-167 `if ($ExcludePassword) { $sql += $InputObject.Script() }` | ○ |
| C-65 | Passthruパラメータでスクリプトをパイプラインに出力できること | E-08: line 193-194 `if ($Passthru) { $sql }` | ○ |
| C-66 | 特定のリンクサーバーのみをエクスポートできること | E-08: line 153-155 `Where-Object Name -in $LinkedServer` | ○ |
| C-67 | Appendパラメータで既存ファイルに追記できること | E-08: line 197-198 `if ($Append) { Add-Content }` | ○ |
| C-68 | パイプラインからLinkedServerオブジェクトを受け付けること | E-08: line 111 `[Microsoft.SqlServer.Management.Smo.LinkedServer[]]$InputObject` | ○ |
| C-69 | Linux/macOSではエラーになること | E-08: line 120-123 `Stop-Function -Message "not supported on Linux or macOS"` | ○ |
| C-70 | リンクサーバー0件時に何も出力されないこと | E-08: line 157-159 `Write-Message ... "Nothing to export"` | ○ |
| C-71 | ファイル書き込み失敗時にエラーが発生すること | E-08: line 203-205 `Stop-Function -Message "Can't write to"` | ○ |
| C-72 | パスワードが正しくデコードされてエクスポートされること | E-08: line 169-191 `Get-DecryptedObject` | ○ |
| C-73 | FilePathパラメータで正確なファイル名を指定できること | E-08: line 162 `Get-ExportFilePath -FilePath $PSBoundParameters.FilePath` | ○ |

### Test-DbaLinkedServerConnection (UT-LNK-074 〜 UT-LNK-082)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-74 | リンクサーバー接続をテストできること | E-09: line 101 `$ls.TestConnection()` | ○ |
| C-75 | 複数のインスタンスに対してテストできること | E-09: line 86 `foreach ($instance in $SqlInstance)` | ○ |
| C-76 | パイプラインから入力を受け付けること | E-09: line 79 `[Parameter(Mandatory, ValueFromPipeline)]` | ○ |
| C-77 | Get-DbaLinkedServerからのパイプライン入力を受け付けること | E-09: line 87-88 `if ($instance.LinkedLive)` | ○ |
| C-78 | 接続失敗時にConnectivity=Falseが返却されること | E-09: line 104-106 `$connectivity = $false` | ○ |
| C-79 | SQL Serverインスタンスへの接続失敗時にエラーが発生すること | E-09: line 92-94 `Stop-Function -Category ConnectionError` | ○ |
| C-80 | 出力オブジェクトに正しい型とプロパティが含まれること | E-09: line 109 `New-Object Dataplat.Dbatools.Validation.LinkedServerResult` | ○ |
| C-81 | リンクサーバー0件時に空結果が返却されること | E-09: line 98 `foreach ($ls in $linkedServerCollection)` | ○ |
| C-82 | SqlCredentialパラメータで認証できること | E-09: line 91 `Connect-DbaInstance ... -SqlCredential $SqlCredential` | ○ |

## 4) 不足情報（Unknown / Missing）
- 全てのテストケースにソースコードからの根拠が存在するため、不足情報はありません。

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全てのテストケースがソースコードに基づいて生成されており、根拠が明確です。

### 追加考慮事項
1. **セキュリティ関連テスト**：Copy-DbaLinkedServer、Export-DbaLinkedServerはパスワードのデコード・転送を行うため、セキュリティテストの追加を検討してください。
2. **プラットフォーム依存テスト**：Copy-DbaLinkedServerとExport-DbaLinkedServerはWindows専用のため、CI/CD環境でのテスト実行に注意が必要です。
3. **権限テスト**：sysadmin権限が必要なコマンドについては、権限不足時の動作確認が重要です。

## 6) レビュアーチェックリスト（最小）
- [ ] 各コマンドの必須パラメータに対するバリデーションテストが含まれているか確認
- [ ] パイプライン入力パターン（Server、LinkedServer、LinkedServerLogin）が網羅されているか確認
- [ ] 正常系・異常系・境界値のバランスが適切か確認
- [ ] セキュリティ関連コマンド（Copy、Export）のパスワード処理テストが適切か確認
- [ ] プラットフォーム固有の制約（Windows専用）に対するテストが含まれているか確認
- [ ] ShouldProcess（WhatIf/Confirm）のサポートが適切にテストされているか確認
