2009-08-20 25 views
6

Jestem w trakcie konfigurowania nowego serwera testowego dla obsługiwanej aplikacji. Korzysta z około 35 różnych kolejek MSMQ, a ręczne tworzenie ich nie jest oczywiście zabawne. Zwłaszcza, że ​​wersja produkcyjna aplikacji przenosi również serwery, więc będę to robił od nowa. To, czego szukam, to zautomatyzowany sposób tworzenia tych kolejek, a Powershell (oparty na mojej ograniczonej wiedzy na ten temat) wydaje się być drogą do zrobienia.Zautomatyzowana konfiguracja MSMQ z Powershell

Czy ktoś ma jakieś wskazówki, w jaki sposób mogę osiągnąć ten cel?

Odpowiedz

1

Myślę, że podejście, które należy podjąć, to utworzenie własnego cmdletu Powershell (Commandlet). Zasadniczo dziedziczysz z klasy bazowej, zastępujesz metodę i jest to metoda, która jest wywoływana podczas wywoływania tego polecenia cmdlet z Powershell. W ten sposób możesz zrobić to, co musisz zrobić w języku C# i po prostu wywołać to z Powershell. Rysunek coś takiego:

EDIT: Zapomniałem odwołują się do MSDN do tworzenia apletów poleceń: http://msdn.microsoft.com/en-us/library/dd878294(VS.85).aspx

[Cmdlet(VerbsCommunications.Get, "MyCmdlet")] 
public class MyCmdlet : Cmdlet 
{ 
    [Parameter(Mandatory=true)] 
    public string SomeParam {get; set;} 

    protected override void ProcessRecord() 
    { 
     WriteObject("The param you passed in was: " + SomeParam); 
    } 

} 

Będziesz wtedy nazywają ten cmdlet z PowerShell coś takiego:

PS>Get-MyCmdlet -SomeParam 'whatever you want' 

Następnie, aby Użyj MSMQ, istnieje wiele próbek online, jak to zrobić z poziomu C#:

Here's just one of them....

+0

Idealny. Myślę, że spróbuję tej trasy, ponieważ nie znam jeszcze Powershell i wydaje się, że to byłby dobry wstęp. Dzięki! – RubyHaus

+0

Cmdlet wydaje się nieco przesadny dla tego konkretnego zadania. Kilka linijek skryptu i nie ma powodu do kompilowania czegokolwiek lub instalowania czegokolwiek (co musisz zrobić z Cmdletem). –

+0

Ale co powinien zrobić Cmdlet? –

0

Nie ma powodu, dla którego nie można używać System.Messaging z poziomu PowerShell. Po prostu załaduj odpowiedni zespół i możesz tworzyć/usuwać/zawieszać swoje kolejki do zawartości swojego serca. Tworzenie niestandardowego polecenia cmdlet jest z pewnością interesującą opcją, ale może być przesadzone w zależności od tego, co chcesz (prosty skrypt może po prostu zdziałać).

6

Może coś takiego. Jest trochę gadatliwy, ale ma na celu wykazanie, że PowerShell może to zrobić bez CmdLet.

# Loads the assembly into PowerShell (because it's not a pre-loaded one) 
[Reflection.Assembly]::LoadWithPartialName("System.Messaging") | Out-Null 

# This is just an array which could also just be a file 
$queueList = (".\q1", ".\q2", ".\q3", ".\q4") 

# Create the queues by piping the list into the creation function 
# $_ refers to the current obect that the ForEach-Object is on 
$queueList | ForEach-Object { [System.Messaging.MessageQueue]::Create($_) }