通过Powershell添加一个链接的服务器

我试图从PowerShell脚本中添加一个链接服务器到我的本地SQL Server 2008 R2安装程序。 以下是我一直在尝试(和变体):

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'<RemoteComputerName>', @useself=N'False' , @locallogin = N'domain\username' , @rmtuser = N'username', @rmtpassword = N'password'; GO 

链接似乎工作正常,但只要我尝试执行一个查询(在Powershell中使用Invoke-Sqlcmd),我收到一个错误,说login失败。

更新:我也尝试链接服务器,并在SQL Server Management Studio中执行一个简单的查询。 我收到相同的结果,所以这个问题不太可能与Powershell相关。 此外,如果我将@useself设置为true,则可以查询连接的服务器。 但是,这种情况并不总是在实践中(即我的脚本不应该要求所有服务器以相同的用户身份login)。

我错过了什么吗?

检查SQL Serverpipe理对象可能是值得的。 以下是如何通过SMO创build链接服务器的示例:

 #Get a server object which corresponds to the default instance $svr = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Server #Create a linked server object which corresponds to an OLEDB type of SQL server product $lsvr = New-Object -TypeName Microsoft.SqlServer.Management.SMO.LinkedServer -argumentlist $svr,"OLEDBSRV" #When the product name is SQL Server the remaining properties are not required to be set. $lsvr.ProductName = "SQL Server" #Create the Database Object $lsvr.Create() 

您可以使用ServerConnection对象为使用LinkedServerLogin对象的链接服务器指定本地SQL Server的凭据。