Я пытаюсь создать файл конфигурации для приложения мониторинга для всех наших SQL серверов. Для этого мне нужно добавить все детали экземпляра сервера в файл конфигурации (т.е. один файл будет создан для каждого сервера, а не экземпляра). Таким образом, даже если сервер имеет несколько экземпляров, у него будет только один файл конфигурации с подробностями обо всех упомянутых в нем экземплярах. Для сервера с единственным экземпляром это не проблема. Мне нужна помощь на сервере с несколькими экземплярами. Например, если server1 имеет два экземпляра Instance1 и 2, тогда файл конфигурации должен выглядеть, как показано ниже, и экспортироваться в текстовый файл. Точно так же для сервера с одним экземпляром будет только 1 строка без запятой в конце, которая будет экспортирована в текстовый файл.
"Server=Server1\Instance1;Port=50001;User ID:sqltest;password:****",
"Server=Server1\Instance2;Port=50002;User ID:sqltest;password:****"
Я получаю все данные экземпляра сервера из SQL базы данных сервера, хранящейся в формате ServerName, InstanceName, PortName. Может ли кто-нибудь помочь мне, как мне добиться этого с помощью Powershell? Спасибо!
Я уже пробовал что-то вроде ниже. Но у него есть несколько проблем, таких как неправильный номер порта, добавление вывода в новую строку каждый раз, когда есть несколько экземпляров, отсутствие запятой для последнего экземпляра и создание файла для каждого сервера, а не для каждого экземпляра.
$serverlist = Invoke-Sqlcmd -Query "SELECT servername,instancename,portname from sqlmonitor" -ServerInstance "MainInstance"$textoutput = "This is a test."
Foreach {$server in $serverlist.servername}
{
$textoutput += "`nServer=$Server;Port=$serverlist.portname;User ID:sqltest;password:****"}
$textoutput | Out-File "C:\temp\$server_config.txt"
Sample data from sqlmonitor table:
servername,instancename,portname
server1,inst1,50001
server2,inst1,50001
server2,inst2,50002
Я все еще нахожусь на начальной стадии изучения PS и знаю, что в моем коде много проблем. :)