不确定这是否属于serverfault ...
我按照this网站上的说明,通过powershell将注册服务器添加到sql studio management studio。它一次只能很好地工作,但我需要为60台服务器做这件事。
我有一个批处理设置,其中包含我需要的每个创建的代码。我无法通过命令行调用sqlps并传入整个命令系列。 我的批次设置如下:
sqlps -NoExit -Command { cd 'SQLSERVER:\sqlregistration\Database Engine Server Group\' new-item $(Encode-Sqlname server1) -itemtype registration -Value "server=server1;integrated security=true" ... and so on }
感谢任何帮助。
答案 0 :(得分:1)
如果您在PS1文件的单独行中列出了每个单独的新项目,例如假设我有一个名为register.ps1的文件,其中包含以下行:。
cd 'SQLSERVER:\sqlregistration\Database Engine Server Group\'; new-item $(Encode-Sqlname server1) -itemtype registration -Value "server=server1;integrated security=true"
cd 'SQLSERVER:\sqlregistration\Database Engine Server Group\'; new-item $(Encode-Sqlname server2) -itemtype registration -Value "server=server1;integrated security=true"
您可以像这样调用sqlps:
sqlps -NoExit -Command "&{C:\bin\register.ps1}"
更好的解决方案是将参数添加到register.ps1
param($ServerInstance)
cd 'SQLSERVER:\sqlregistration\Database Engine Server Group\'
New-Item $(Encode-Sqlname $server) -itemtype registration -Value "server=$serverInstance;integrated security=true"
然后使用SQL实例列表创建一个文件,例如server.txt:
server1
server2
为每一行调用register.ps1:
get-content C:\bin\server.txt | foreach {C:\bin\register.ps1 $_ }
答案 1 :(得分:0)
在命令之间放置分号。
答案 2 :(得分:0)
感谢@Chad指出我正确的方向,我想出了这个,它起作用了:
包含多行的批处理文件,每行看起来像这样:
sqlps -Command "&{ cd 'SQLSERVER:\sqlregistration\Database Engine Server Group'; new-item $(Encode-Sqlname serverX) -itemtype registration -Value \"server=serverX;integrated security=true\";}"