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