2012-02-13 73 views
4

我想在不同的服務器上向我的SSMS(SQL Managment Studio)註冊的服務器添加一堆SQL(混合使用2000-2005)服務器實例,我按照本教程here一次只能添加一臺服務器,而不是同時添加一臺服務器。將服務器添加到SQL管理工作室

該列表當前在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 

回答

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對象使用連接到SQL Server實例New-Item cmdlet。所以完整的命令是:

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")) } 
+0

我覺得你的意思是.csv而不是cvs? – JackyBoi 2012-02-13 14:18:32

+0

@JackyBoi當然。我糾正了我的答案。感謝您指出:) – 2012-02-13 14:24:22

+0

好吧,我收到以下錯誤,它說,該值不能轉換爲system.security.securestring,具體錯誤我粘貼在原來的問題..其他比我猜測它正在處理所有那之前的代碼? (只是猜測!)但是男人! – JackyBoi 2012-02-13 14:41:24