Удалить сообщения, которые находятся в очереди сообщений более 31 дня - PullRequest
0 голосов
/ 08 октября 2019

У меня нет опыта работы с PowerShell, но этот небольшой запрос, но удалить все очереди, мне нужно только удалить сообщения старше 31 дня:

[System.Reflection.Assembly]::LoadWithPartialName("System.Messaging") | Out-Null
$queuePath = ".\private$\bitacora_muertos"
$queue = New-Object System.Messaging.MessageQueue $queuePath
$messages = $queue.GetAllMessages()
$today = Get-Date
$today = $today.AddMinutes(-2)
$TIME = [DateTime]::Now.Subtract([TimeSpan]::FromMinutes(2))

if ($_.ArrivedTime -lt $TIME) {
    $queue.ReceiveById($_.ArrivedTime, [DateTime]::$TIME)
}

Редактировать:

[System.Reflection.Assembly]::LoadWithPartialName("System.Messaging") | 
Out-Null
$queuePath = ".\private$\bitacora_muertos"
$mq = New-Object System.Messaging.MessageQueue $queuePath

foreach ( $msg in $queues )
{
    $mq | ? { $msg.ArrivedTime -lt [DateTime]::Now.Subtract([TimeSpan]::FromMinutes(5)) } | % { $mq.ReceiveById($_.Id) } 
}

В данный момент FromMinutes устанавливают 5 для тестирования, но продолжают удалять все очереди

...