bất cứ ai có thể cho tôi một số gợi ý về cách để thiết lập quyền truy cập vào hàng đợi MSMQ trong kịch bản, tốt PowerShell, nhưng tôi muốn sử dụng VBScriptquyền Setting trên một hàng đợi MSMQ trong một kịch bản
Trả lời
Câu trả lời trong ngày (2015) cho câu hỏi này.
Ví dụ:
New-MsmqQueue -Name "MyQueue" -QueueType Private
Get-MsmqQueue -Name "MyQueue" -QueueType Private |
Set-MsmqQueueAcl -UserName "Everyone" -Allow FullControl
Áp dụng cho: Windows 8.1, Windows PowerShell 4.0, Windows Server 2012 R2
tham khảo: https://technet.microsoft.com/en-us/library/dn391735(v=wps.630).aspx
Không có gì được xây dựng vào powershell cho điều này là, nhưng bạn có thể sử dụng các lớp .NET framework. Chỉ cần tải System.Messaging.dll và sử dụng MessageQueue.SetPermissions() để thay đổi ACL trên hàng đợi.
Và đây là một số ví dụ PowerShell bao gồm thiết lập các điều khoản ... xin lỗi về độ dài
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 !!"
này bây giờ là lỗi thời - câu trả lời @Davids là tốt hơn nhiều. –
Đây là một câu trả lời tuyệt vời cho những người đang chạy Windows 7 hoặc trước Windows Server 2012 R2. Nếu không, @GregSansom là chính xác. Cảm ơn bạn đã đăng câu trả lời này. – fourpastmidnight
của Windows 2012 và 8.1 bây giờ có cmdlet MSMQ. Người đặt quyền trên hàng đợi là: Set-MsmqQueueAcl
- 1. Đặt quyền mặc định khi tạo Hàng đợi Tin nhắn mới (MSMQ) trong C#
- 2. Hàng đợi riêng và công khai trên MSMQ
- 3. MSMQ - Không thể nhận được từ hàng đợi Multicast
- 4. Chỉnh sửa tin nhắn MSMQ trong hàng đợi
- 5. hàng đợi tin nhắn cho iOS/iPad - giống như MSMQ?
- 6. MSMQ Nhận tất cả các hàng đợi riêng
- 7. Thông điệp NServiceBus MSMQ liên tục bị kẹt trên Hàng đợi Đi
- 8. cron script để hoạt động như một hàng đợi HOẶC một hàng đợi cho cron?
- 9. Coloring/thụt một kịch bản trong kịch bản trong Emacs
- 10. MSMQ - hàng đợi tin nhắn chưa được cài đặt trên máy tính này
- 11. Làm thế nào để không chờ đợi cho một quá trình để hoàn thành trong kịch bản hàng loạt?
- 12. Setting trên ExtJS trường văn bản
- 13. Hàng đợi chặn Java nào hiệu quả nhất cho các kịch bản một người tiêu dùng sản xuất đơn
- 14. Tkinter: Đợi mặt hàng trong hàng đợi
- 15. Setting của một Html.DropDownList()
- 16. Đồng bộ hóa một Hàng đợi
- 17. Thoát dấu ngoặc kép trong kịch bản mong đợi
- 18. bắt một git hậu nhận lỗi trong một kịch bản
- 19. Scala như một kịch bản shell: lọ trên classpath
- 20. MSMQ có sẵn trên Azure
- 21. Làm sạch hàng đợi MSMQ và đặt lại IIS từ tệp bat
- 22. Làm thế nào để dọn dẹp một tạp chí hàng đợi hệ thống MSMQ theo chương trình?
- 23. Viết một hàng đợi phân tán trong DynamoDB
- 24. Làm thế nào để làm sạch hàng đợi gửi đi MSMQ
- 25. Việc đình chỉ một hàng đợi công văn có đình chỉ hàng đợi đích không?
- 26. nhiều hơn một bản dựng trong hàng đợi cho công việc cụ thể trong jenkins
- 27. MSMQ - có thể một hàng đợi tồn tại trong quá trình xếp hàng khởi động lại/máy chủ khởi động lại
- 28. là có bất kỳ sự kiện hoặc gọi lại trên MSMQ cho thư mới được thêm vào hàng đợi
- 29. Hàng đợi nhanh trong Java
- 30. MSMQ hoạt động trên TCP hoặc UDP?
thay vì 'Get-MsmqQueue' bạn cũng có thể' $ newQueue = New-MsmqQueue ... 'và sau đó' $ newQueue | Set-MsmqQueueAcl ... ' – Greg