使用Get-StoredCredential连接SQL Server时类型转换错误如何解决
解决方案:用Get-StoredCredential创建SQL Server连接
报错的核心原因是类型不匹配:Get-StoredCredential 返回的是 System.Management.Automation.PSCredential 类型对象,而 SqlConnection.Credential 属性要求传入 System.Data.SqlClient.SqlCredential 类型对象,二者不能隐式转换。
你只需要将拿到的PSCredential对象转换为SqlCredential对象即可,修改后的完整可用代码如下:
# 1. 获取存储的凭据 $creds = Get-StoredCredential -Target dbStoredCredentials # 2. 构造SqlConnection要求的SqlCredential对象 $sqlCred = New-Object System.Data.SqlClient.SqlCredential($creds.UserName, $creds.Password) # 3. 创建SQL连接并配置参数 $newConnection = New-Object System.Data.SqlClient.SqlConnection $newConnection.ConnectionString = "Data Source=my-apps-server;Initial Catalog=myDatabase;" $newConnection.Credential = $sqlCred # 测试连接(可选) try { $newConnection.Open() Write-Host "连接成功" # 此处可添加后续数据库操作逻辑 } catch { Write-Host "连接失败: $_" } finally { # 操作完成后关闭连接释放资源 $newConnection.Dispose() }
补充说明:
- 如果你使用的是Windows域身份验证而非SQL Server独立身份验证,不需要单独配置Credential属性,直接在连接字符串中添加
Integrated Security=True参数即可,此时会自动使用当前PowerShell进程的身份上下文登录数据库 - 上述方案同时兼容PowerShell 5.1和PowerShell 7+版本
内容的提问来源于stack exchange,提问作者Just Rudy
相关产品推荐
相关产品推荐

