2009-08-20 14 views
6

Estoy en el proceso de configurar un nuevo servidor de prueba para una aplicación que admita. Utiliza alrededor de 35 colas diferentes de MSMQ y crearlas manualmente obviamente no es muy divertido. Sobre todo porque la versión de producción de la aplicación también está moviendo servidores, así que voy a poder hacer esto una vez más. Lo que estoy buscando es una forma automatizada para crear estas colas y Powershell (basado en mi conocimiento limitado) parece ser el camino a seguir.Configuración automática de MSMQ con Powershell

¿Alguien tiene alguna sugerencia sobre cómo puedo lograr esto?

Respuesta

1

Creo que el enfoque que debe tomar es crear su propio cmdlet Powershell (Commandlet). Básicamente, usted hereda de una clase base, reemplaza un método, y ese es el método al que se llama cuando llama a ese cmdlet de Powershell. De esta manera puede hacer lo que necesita hacer en C# y simplemente llamarlo desde Powershell. La figura algo como esto:

EDIT: Se olvidó de enlazar a MSDN para crear cmdlets: 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); 
    } 

} 

A continuación, llamar a este cmdlet de PowerShell algo como esto:

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

Luego, a use MSMQ, hay muchas muestras en línea sobre cómo lograr esto desde C#:

Here's just one of them....

+0

Perfecto. Creo que voy a intentar esta ruta ya que todavía no estoy familiarizado con Powershell y parece que sería una buena introducción. ¡Gracias! – RubyHaus

+0

Un Cmdlet parece un poco exagerado para esta tarea en particular. Algunas líneas de script y no hay ninguna razón para compilar nada o instalar nada (que tiene que ver con un Cmdlet). –

+0

Pero, ¿qué debería hacer el Cmdlet? –

0

No hay ninguna razón por la que no pueda usar System.Messaging desde dentro de PowerShell. Simplemente cargue el ensamblaje correcto y podrá crear/eliminar/enganchar sus colas al contenido de su corazón. Crear un cmdlet personalizado es ciertamente una opción interesante, pero podría ser excesivo dependiendo de lo que desee (un simple script podría ser el truco).

6

Tal vez algo así como. Es un poco detallado, pero es para ayudar a demostrar que PowerShell puede hacer esto sin un 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

Si está utilizando el PowerShell Community Extensions (PSCX), tiene cmdlets para crear y administrar MSMQ:

  • Claro-MSMQueue
  • Get-MSMQueue
  • Nueva MSMQueue
  • Test-MSMQueue
Cuestiones relacionadas