Purge MSMQ queue and reset IIS from a bat file

前端 未结 3 1265

Is it possible to purge a msmq queue from a bat file?

Essentially I want to make a bat file or at least something quick and easy so that an untrained employee can cl

相关标签:
3条回答
  • 2021-01-02 11:38

    PowerShell script to purge all private queues on local machine:

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

    As explained in https://stackoverflow.com/a/11793579/1235394, easiest way to execute it is:

    • save script to file purge-private-msmq-queues.ps1
    • in the same folder create script file purge-private-msmq-queues.cmd with following content:

      powershell -executionpolicy Unrestricted .\purge-private-msmq-queues.ps1
      
    0 讨论(0)
  • 2021-01-02 11:51

    Take a look on MSMQAdm Utility

    Tasks administered through the utility programs include the following:

    • Browsing local queues
    • Purging messages
    • Deleting individual messages
    • Stopping and starting MSMQ service
    • Connecting and disconnecting from the network

    Don't forget about powershell, take a look on PowerShell Community Extensions

    Update

    Open powershell and write line by line

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

    Call powershell from cmd

    1. Create txt file.
    2. Insert all lines
    3. Change file extension on "ps1"

    The easiest way call script from cmd.

    powershell.exe -executionpolicy Unrestricted C:\purgemsmq.ps1

    0 讨论(0)
  • 2021-01-02 11:59

    THis Code Works:

    [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 讨论(0)
提交回复
热议问题