У меня нет опыта работы с 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 для тестирования, но продолжают удалять все очереди