2012-08-03 49 views
8

¿Es posible purgar una cola msmq de un archivo bat?Purgar MSMQ queue y reiniciar IIS desde un archivo bat

Esencialmente Quiero hacer un bat o al menos algo rápido y fácil para que un empleado sin entrenamiento puede hacer clic y fijar sin conocer ninguna herramienta de concha o de administrador

Podría alguien por favor me ayude en la dirección correcta?

Respuesta

14

echar un vistazo en MSMQAdm Utility

tareas administradas a través de los programas de utilidades incluyen los siguientes:

  • Navegar colas locales
  • mensajes de purga
  • Eliminación de mensajes individuales
  • Detención y iniciando el servicio MSMQ
  • Conexión y desconexión de la red

No se olvide de PowerShell, echar un vistazo en PowerShell Community Extensions

actualización

PowerShell abierta y la línea de escritura por la línea

[Reflection.Assembly]::LoadWithPartialName("System.Messaging") 
$queueName = '.\Private$\testQueue' 
$queue = new-object -TypeName System.Messaging.MessageQueue -ArgumentList $queueName 
$queue.Purge() 

Llamar a powershell desde cmd

  1. Crear archivo de texto.
  2. Insertar todas las líneas
  3. extensión de modificación del archivo en "PS1"

El guión manera más fácil de llamada cmd.

powershell.exe -executionpolicy no restringido C: \ purgemsmq.ps1

+0

Bueno, voy a echar un vistazo.Pero, esencialmente, quiero hacer un archivo bat o al menos algo rápido y fácil para que un empleado no entrenado pueda hacer clic y corregir sin conocer ninguna shell o herramientas de administración. – Martin

+0

Msmq no tiene utilidades de línea de comandos. Consulte http://stackoverflow.com/questions/9018826/msmq-command-line-in-win-7 – GSerjo

+0

comandos de PowerShell agregados, solo abra PowerShell e inserte todos línea por línea – GSerjo

3

Este código funciona: guión

[Reflection.Assembly]::LoadWithPartialName("System.Messaging") | Out-Null 
$Name=(get-wmiobject win32_computersystem).name 
$QName=(
"FormatName:Direct=OS:$name\System$;DEADXACT", 
"FormatName:Direct=OS:$name\System$;DEADLETTER" 
) 

foreach ($Q in $Qname){ 
$MessageQueue = New-Object System.Messaging.MessageQueue($Q) 
$MSGCount=$($MessageQueue.GetMessageEnumerator2()).count 

IF($MSGCount){ 
$MessageQueue.Purge() 
Write-Host "$Q has been purged of $MSGCount messages." -ForegroundColor green 
} 
Else{ 
Write-Host "$Q is clean"} 

} 
+0

Junto con el código, intente explicar al respecto también . – Jatin

+0

Invoke-command $ Server -scriptblock {} – IVISIONEDI

1

PowerShell para purgar todas las colas privadas en el equipo local:

[Reflection.Assembly]::LoadWithPartialName("System.Messaging") 
$MachineName=(get-wmiobject win32_computersystem).name 
[System.Messaging.MessageQueue]::GetPrivateQueuesByMachine("$MachineName") | % { $_.Purge(); } 

Como se explica en https://stackoverflow.com/a/11793579/1235394, la manera más fácil de ejecutarlo es:

  • guardar en Fichero purge-private-msmq-queues.ps1
  • en la misma carpeta crear el archivo de secuencia de comandos con purge-private-msmq-queues.cmd siguiente contenido:

    powershell -executionpolicy Unrestricted .\purge-private-msmq-queues.ps1 
    
Cuestiones relacionadas