删除消息队列中超过31天的消息

时间:2019-10-08 19:40:11

标签: powershell msmq

我对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进行测试,但继续删除所有队列

0 个答案:

没有答案