通过powershell Enter-PSSession连接到SQL Server 2012(使用Windows身份验证)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过powershell Enter-PSSession连接到SQL Server 2012(使用Windows身份验证)相关的知识,希望对你有一定的参考价值。

希望你能帮助我解决我面临的问题。这是一个冗长的提供背景。简而言之,我的Windows身份验证访问SQL Server 2008 R2数据库失败,因为它似乎试图以“NT AUTHORITY ANONYMOUS LOGON”而不是当前用户的身份访问数据库。

这是我的方案:服务器场有多个运行独立SQL Server数据库的服务器,需要运行多个PowerShell脚本,这些脚本连接到数据库并运行一些查询并根据查询对某些数据库表进行一些更新。我们在Windows auth登录到数据库时失败了(适用于SQL Server Mgmt Studio v10)。

它看起来像这样:

  1. win7pc PS C:> Enter-PSSession -ComputerName winsvr2k8r2
  2. [winsvr2k8r2]:PS c: users svs_acct1>
  3. [winsvr2k8r2]:PS c: users svs_acct1> Set-Location C: 注意:有一个脚本目录是配置文件中设置的$env:PATH的一部分
  4. [winsvr2k8r2]:PS c: users svs_acct1>。 用户 svs_acct1 BIN 运行AdminTasks

脚本输出

Loading AD module ...  
 Setting Global Variables ...  
 I am user: domreff1dbappuser  
 Initiating DB Connection using windows auth to: sTango @ hgr23992atr77504  
  with connect string ...  
   Data Source=hgr23992atr77504;Initial Catalog=sTango;Integrated Security=SSPI  

错误

用“0”参数调用“打开”的异常:“用户登录失败'NT AUTHORITY ANONYMOUS LOGON'。” 在C: users svs_acct1 bin Run-AdminTasks:21 char:20 + $ SqlConnection.open <<<<(); + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:DotNetMethodException

脚本中的相关DB连接元素:

$SQLServer = "hgr23992atr77504";  
$SQLDBName = "sTango";  
$SQLDBUser = [Security.Principal.WindowsIdentity]::GetCurrent().Name;  

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection  
$SqlConnection.ConnectionString = "Data Source=$SQLServer;Initial Catalog=$SQLDBName;Integrated Security=SSPI"  
$SqlConnection.open();

我已经浏览了各种帖子并尝试了多种不同方式的连接字符串,例如

Data Source=$SQLServer;Initial Catalog=$SQLDBName;Integrated Security=[Yes|True|SSPI]

没有快乐。

关于问题可能是什么以及为什么数据库连接似乎反映了我正在运行脚本的不同上下文/用户的任何想法?

答案

问题是kerberos auth和令牌的丢失委托。

您可以为powershell启用CredSSP auth(在客户端和服务器端)。请仅通过SSL执行此操作,否则您很容易受到MITM的攻击。

检查https://msdn.microsoft.com/en-us/library/ee309365(v=vs.85).aspx

以上是关于通过powershell Enter-PSSession连接到SQL Server 2012(使用Windows身份验证)的主要内容,如果未能解决你的问题,请参考以下文章

powershell 通过Powershell进行AWS Cloudwatch指标

powershell 通过Powershell下载最新的GitHub版本

powershell 这通过PowerShell计算SharePoint中的各种项目

powershell SharePoint通过PowerShell添加用户和中断角色继承

Powershell通过变量数组批量添加保留地址

powershell 通过PowerShell创建/编辑AD用户,使用纯文本密码