¿alguien puede darme algunos consejos sobre cómo establecer permisos en las colas MSMQ en escritura, preferentemente PowerShell, pero me gustaría utilizar VBScriptConfiguración de permisos en una cola de MSMQ en un guión
Respuesta
Un presente (2015) día responde a esta pregunta.
Ejemplo:
New-MsmqQueue -Name "MyQueue" -QueueType Private
Get-MsmqQueue -Name "MyQueue" -QueueType Private |
Set-MsmqQueueAcl -UserName "Everyone" -Allow FullControl
aplica a: Windows 8.1, Windows PowerShell 4.0, Windows Server 2012 R2
Referencia: https://technet.microsoft.com/en-us/library/dn391735(v=wps.630).aspx
No hay nada integrado en PowerShell para esto, pero puede usar las clases .NET framework. Simplemente cargue System.Messaging.dll y use MessageQueue.SetPermissions() para cambiar la ACL en la cola.
Y aquí está un cierto ejemplo PowerShell incluyendo el establecimiento de los permisos ... lo de la longitud
Write-Host ""
Write-Host "Examples using the .NET System.Messaging assembly to access MSMQ"
Write-Host ""
Write-Host "... load the .NET Messaging assembly"
[Reflection.Assembly]::LoadWithPartialName("System.Messaging")
Write-Host ""
if ([System.Messaging.MessageQueue]::Exists(".\private$\MyQueue"))
{
[System.Messaging.MessageQueue]::Delete(".\private$\MyQueue")
Write-Host "... delete old myqueue"
}
if ([System.Messaging.MessageQueue]::Exists(".\private$\BtsQueue"))
{
[System.Messaging.MessageQueue]::Delete(".\private$\BtsQueue")
Write-Host "... delete old btsqueue"
}
Write-Host "... create a new queue"
$q1 = [System.Messaging.MessageQueue]::Create(".\private$\MyQueue")
Write-Host "... create new queue, set FullControl permissions for CORP\BIZTALK"
$qb = [System.Messaging.MessageQueue]::Create(".\private$\BtsQueue")
$qb.SetPermissions("CORP\BIZTALK",
[System.Messaging.MessageQueueAccessRights]::FullControl,
[System.Messaging.AccessControlEntryType]::Set)
Write-Host "... list existing queues"
$pqs = [System.Messaging.MessageQueue]::GetPrivateQueuesByMachine(".")
Write-Host " Count: "$pqs.length -ForegroundColor gray
foreach($q in $pqs)
{
Write-Host " "$q.QueueName -ForegroundColor gray
}
Write-Host "... access existing queue"
$q2 = New-Object System.Messaging.MessageQueue ".\private$\MyQueue"
Write-Host "... adding string Formatter and additional properties "
$q2.Formatter.TargetTypeNames = ,"System.String"
$q2.MessageReadPropertyFilter.ArrivedTime = $true
$q2.MessageReadPropertyFilter.SentTime = $true
Write-Host "... create a new High priorty message "
$msg = New-Object System.Messaging.Message "TestMessage"
$msg.label = "Test Msg Label"
$msg.body = "Add some body to test message"
$msg.priority = [System.Messaging.MessagePriority]::High
Write-Host "... send the High message"
$q2.send($msg)
$msg.body = "Some more text for the test message"
$msg.priority = [System.Messaging.MessagePriority]::Low
Write-Host "... send the Low message"
$q2.send($msg)
Write-Host "... check the queue "
Write-Host " Count: "$q2.GetAllMessages().length -ForegroundColor gray
Write-Host "... peek at queue"
$ts = New-Object TimeSpan 10000000 # 1 sec. timeout just in case MSMQ is empty
$pk = $q2.Peek($ts)
Write-Host " ArrivedTime: "$pk.ArrivedTime.DateTime -ForegroundColor gray
Write-Host " SentTime : "$pk.SentTime.DateTime -ForegroundColor gray
Write-Host "... check the queue "
Write-Host " Count: "$q2.GetAllMessages().length -ForegroundColor gray
Write-Host "... receive from queue"
$rmsg = $q2.receive($ts)
Write-Host " Body : "$rmsg.body -ForegroundColor gray
Write-Host " Label: "$rmsg.label -ForegroundColor gray
Write-Host "... check the queue "
Write-Host " Count: "$q2.GetAllMessages().length -ForegroundColor gray
Write-Host "... purge the queue "
$q2.Purge()
Write-Host "... check the queue "
Write-Host " Count: "$q2.GetAllMessages().length -ForegroundColor gray
Write-Host ""
Write-Host "All done, but remember to delete the test queues !!"
Esto es ahora obsoleto - @Davids respuesta es mucho mejor. –
Esta es una gran respuesta para aquellos que están ejecutando Windows 7 o pre-Windows Server 2012 R2. De lo contrario, @GregSansom es correcto. Gracias por publicar esta respuesta. – fourpastmidnight
de Windows 2012 y 8.1 ahora tienen cmdlets MSMQ. El que establece los permisos en una cola es: Set-MsmqQueueAcl
- 1. Editar mensajes de MSMQ en una cola
- 2. Cómo purgar una cola de MSMQ saliente
- 3. ¿Alternativas de cola a MSMQ en Windows?
- 4. Conexión a una cola de MSMQ privada remota
- 5. Establecer permisos predeterminados al crear un nuevo Message Queue (MSMQ) en C#
- 6. Configuración de permisos en ZipArchive
- 7. MSMQ: ¿puede una cola sobrevivir a un proceso de cola reiniciar/reiniciar el servidor
- 8. mensajes MSMQ está atascado en la cola de salida
- 9. Guión de shell - Permisos de sudo perdidos en el tiempo
- 10. MSMQ uno (cola) para muchos (oyentes) escenario
- 11. ¿Hay una forma mejor de contar los mensajes en una cola de mensajes (MSMQ)?
- 12. MSMQ no puede eliminar o purgar una cola
- 13. Configuración automática de MSMQ con Powershell
- 14. Mover el mensaje de la cola de la carta muerta a la cola de salida MSMQ
- 15. cola de mensajes para iOS/iPad, algo así como MSMQ?
- 16. MSMQ línea de comando en win 7
- 17. Escribiendo a un MSMQ remoto
- 18. Escalabilidad MSMQ
- 19. a MSMQ o no a MSMQ? (o SQL Table como la cola)
- 20. Servicio Msmq y WCF
- 21. Monitoreo de MSMQ
- 22. ¿Cómo puedo cambiar la prioridad de un mensaje en MSMQ?
- 23. Configuración de permisos para WordPress en Amazon EC2 (Amazon Linux)
- 24. ¿Cómo cambiar la configuración de Msmq del modo de grupo de trabajo al modo de dominio?
- 25. MSMQ COM API en C#
- 26. MSMQ está disponible en Azure
- 27. MSMQ: la cola de mensajes no se ha instalado en esta computadora
- 28. Colas privadas y públicas en MSMQ
- 29. Manejo de mensajes de envenenamiento en WCF MSMQ 4.0
- 30. ¿Cómo purgar un diario de la cola del sistema MSMQ programáticamente?
en lugar del 'Get-MsmqQueue' también podría' $ newQueue = New-MsmqQueue ... 'y luego' $ newQueue | Set-MsmqQueueAcl ... ' – Greg