powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Не могу получить коллекцию RegisteredServers в PowerShell
2 сообщений из 2, страница 1 из 1
Не могу получить коллекцию RegisteredServers в PowerShell
    #34736048
Spirit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа хорошие...
с проблемой столкнулся - ну никак не выберусь..

С#
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SqlServer.Management.Smo;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            foreach (Microsoft.SqlServer.Management.Smo.RegisteredServers.RegisteredServer registeredServer in SmoApplication.SqlServerRegistrations.RegisteredServers)
            {
                 Console.WriteLine("Server: {0}", registeredServer.Name);

            }
            Console.ReadLine();
        }
    }
}
вот этот код прекрасно отрабатывает, находит SQL инстанс, пишет имя. Все хорошо.

Пытаюсь то же самое сделать для PowerShell

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | out-null

$app = new-object "microsoft.sqlserver.management.smo.smoapplication" 

foreach ($t in $app.SqlServerRegistrations.RegisteredServers) {
            write-host $t.name
            }

а вот это не работает. Упорно. И никаких мыслей.

Покажите, где накосячил, пожалуйста..
...
Рейтинг: 0 / 0
Не могу получить коллекцию RegisteredServers в PowerShell
    #34864129
r.t.f.m.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А Вы посмотрите с помощью get-member - inputobject $app
что содержит данный объект и "приятно" удивитесь.
В данный момент смог решить проблему только через динамическую генерацию и выполнение кода vb net:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
$provider  = new-object Microsoft.VisualBasic.VBCodeProvider
$params    = new-object System.CodeDom.Compiler.CompilerParameters
$params.GenerateInMemory = $True
$refs = "System.dll", "Microsoft.VisualBasic.dll","c:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.SqlServer.Smo.dll","c:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.SqlServer.ConnectionInfo.dll"
$params.ReferencedAssemblies.AddRange($refs)
$txtCode = '
Class SMO
    function get_servers()
		Dim ret() as String
		Dim smoapp as new Microsoft.SqlServer.Management.Smo.SmoApplication
		Dim i as integer
		
		ReDim ret(smoapp.SqlServerRegistrations.RegisteredServers.Count)
		i=0
		for each registeredServer as Microsoft.SqlServer.Management.Smo.RegisteredServers.RegisteredServer  in smoapp.SqlServerRegistrations.RegisteredServers
				ret(i)=registeredServer.Name
				i=i+1
		Next registeredServer
		get_servers=ret
    End function
End Class
'
$results = $provider.CompileAssemblyFromSource($params, $txtCode)
$mAssembly = $results.CompiledAssembly
$i = $mAssembly.CreateInstance("SMO")
$r = $i.get_servers()
$r
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Не могу получить коллекцию RegisteredServers в PowerShell
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]