2009-08-20 13 views
6

Sono in procinto di configurare un nuovo server di prova per un'applicazione che supporto. Utilizza circa 35 diverse code MSMQ e la creazione di queste manualmente non è ovviamente molto divertente. Soprattutto perché anche la versione di produzione dell'applicazione sta spostando i server, quindi tornerò a fare tutto da capo. Quello che sto cercando è un modo automatico per creare queste code e Powershell (basato sulla mia conoscenza limitata di esso) sembra la strada da percorrere.Installazione MSMQ automatica con PowerShell

Qualcuno ha qualche consiglio su come potrei fare per realizzare questo?

risposta

1

Penso che l'approccio da seguire sia creare il proprio cmdlet Powershell (Commandlet). Fondamentalmente, si eredita da una classe base, si sovrascrive un metodo, e questo è il metodo che viene chiamato quando si chiama quel cmdlet da PowerShell. In questo modo puoi fare ciò che devi fare in C# e chiamarlo semplicemente da PowerShell. Figura qualcosa di simile:

EDIT: Ho dimenticato di collegare a MSDN per i cmdlet che creano: 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); 
    } 

} 

Si potrebbe quindi chiamare questo cmdlet da PowerShell qualcosa di simile:

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

Poi, a utilizzare MSMQ, ci sono molti esempi in linea su come eseguire questa operazione da C#:

Here's just one of them....

+0

Perfetto. Penso che tenterò questa strada poiché non ho ancora familiarità con Powershell e sembra che sarebbe una buona introduzione. Grazie! – RubyHaus

+0

Un Cmdlet sembra un po 'eccessivo per questo particolare compito. Alcune righe di script e non vi è alcun motivo per compilare o installare nulla (cosa che devi fare con un cmdlet). –

+0

Ma cosa dovrebbe fare il cmdlet? –

0

Non c'è motivo per cui non sia possibile utilizzare System.Messaging da PowerShell. Basta caricare l'assemblaggio corretto e puoi creare/eliminare/agganciare le code al contenuto del tuo cuore. La creazione di un cmdlet personalizzato è certamente un'opzione interessante, ma potrebbe essere eccessivo a seconda di ciò che si desidera (un semplice script potrebbe semplicemente fare il trucco).

6

Forse qualcosa del genere. È un po 'prolisso ma serve a dimostrare che PowerShell può farlo senza 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($_) } 
6

Se si utilizza il PowerShell Community Extensions (PSCX), ha cmdlet per la creazione e la gestione di MSMQ:

  • Clear-MSMQueue
  • Get-MSMQueue
  • New-MSMQueue
  • Test-MSMQueue