将服务器添加到SQL Management Studio

时间:2012-02-13 05:59:10

标签: sql-server powershell sql-server-2008

我想在不同的服务器上添加一堆SQL(2000-2005的混合)服务器实例到我的SSMS(SQL Managment Studio)注册服务器,我正在学习本教程here但是这只添加了一个服务器不是所有的同时。

该列表当前位于Excel中,但可以导入到记事本或任何其他文档格式,只要PowerShell命令可以识别它。另外,需要注意的另一件事是我可以在哪里更改登录以使用sql身份验证?并指定用户名和密码?

New-Item $(Encode-Sqlname "SERVERNAME\INSTANCENAME") -itemtype registration -Value “server=MyServer;integrated security=true” 

TKS

ERROR

New-Object : Cannot convert argument "1", with value: "", for "PSCredential" to
 type "System.Security.SecureString": "Cannot convert the "" value of type "Sys
tem.String" to type "System.Security.SecureString"."
At line:4 char:32
+         -Credential (New-Object <<<<  System.Management.Automation.PSCredenti
al("sa", "")) }
    + CategoryInfo          : InvalidOperation: (:) [New-Object], MethodExcept
   ion
    + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.Power
   Shell.Commands.NewObjectCommand

1 个答案:

答案 0 :(得分:2)

如果将Excel电子表格另存为CSV文件,则可以使用Import-Csv cmdlet在PowerShell中轻松导入它,并通过名称自动注册列表中的服务器。

假设您的CSV文件如下所示:

|Name    |
|Server1 |
|Server2 |
|Server3 |

以下命令将其内容作为对象列表导入,CSV文件中的每一行都有一个,所有属性都包含Name属性,其中包含实际值。然后在传递给New-Item cmdlet的字符串中使用来实际进行注册:

Import-Csv ServersToRegister.csv | ForEach-Object { `
    New-Item $(Encode-Sqlname $_.Name) -ItemType Registration `
        -Value ("server=$($_.Name);integrated security=true") }

您可以通过将PSCredential对象传递给New-Item cmdlet来指定用于连接到SQL Server实例的用户名和密码。所以完整的命令是:

Import-Csv ServersToRegister.csv | ForEach-Object { `
    New-Item $(Encode-Sqlname $_.Name) -ItemType Registration `
        -Value ("server=$($_.Name);integrated security=true") `
        -Credential (New-Object System.Management.Automation.PSCredential("username", "password")) }