Как отправить несколько команд в Sql PowerShell из командной строки Windows? - PullRequest
1 голос
/ 01 июля 2011

Не уверен, относится ли это к ошибкам сервера или нет ...

Я следую инструкциям на этом сайте для добавления зарегистрированных серверов в студию управления sql studio через powershell.Он отлично работает по одному, но мне нужно сделать это для 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 }

Любая помощь приветствуется.

Ответы [ 3 ]

1 голос
/ 02 июля 2011

Если у вас есть каждый отдельный новый элемент, перечисленный в отдельной строке в файле PS1, например, при условии, что у меня есть файл с именем register.ps1 со следующими строками: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, например, сервер.txt:

server1
server2

Вызовите register.ps1 для каждой строки:

get-content C:\bin\server.txt | foreach {C:\bin\register.ps1 $_ }
0 голосов
/ 04 июля 2011

Благодаря @Chad, направившему меня в правильном направлении, я придумал это, которое сработало:

Пакетный файл с несколькими строками, каждая строка выглядит следующим образом:

sqlps -Command "&{ cd 'SQLSERVER:\sqlregistration\Database Engine Server Group'; new-item $(Encode-Sqlname serverX) -itemtype registration -Value \"server=serverX;integrated security=true\";}" 
0 голосов
/ 01 июля 2011

Поместите точки с запятой между командами.

...