2009-08-20 39 views
6

Tôi đang trong quá trình định cấu hình máy chủ thử nghiệm mới cho ứng dụng tôi hỗ trợ. Nó sử dụng khoảng 35 hàng đợi MSMQ khác nhau và việc tạo các hàng đợi thủ công này rõ ràng là không có nhiều niềm vui. Đặc biệt là kể từ khi phiên bản sản xuất của ứng dụng cũng đang di chuyển các máy chủ vì vậy tôi sẽ làm điều này trên một lần nữa. Những gì tôi đang tìm kiếm là một cách tự động để tạo ra những hàng đợi và Powershell (dựa trên kiến ​​thức hạn chế của tôi về nó) có vẻ như là con đường để đi.Thiết lập MSMQ tự động với Powershell

Có ai có bất kỳ mẹo nào về cách tôi có thể thực hiện việc này không?

Trả lời

1

Tôi nghĩ rằng cách tiếp cận bạn nên thực hiện là tạo ra lệnh ghép ngắn Powershell của riêng bạn (Commandlet). Về cơ bản, bạn kế thừa từ một lớp cơ sở, ghi đè lên một phương thức, và đó là phương thức được gọi khi bạn gọi lệnh đó từ Powershell. Bằng cách này bạn có thể làm những gì bạn cần làm trong C# và chỉ cần gọi nó từ Powershell. Hình một cái gì đó như thế này:

EDIT: Quên để liên kết đến MSDN để tạo cmdlet: http://msdn.microsoft.com/en-us/library/dd878294(VS.85).aspx

[Cmdlet(VerbsCommunications.Get, "MyCmdlet")] 
public class MyCmdlet : Cmdlet 
{ 
    [Parameter(Mandatory=true)] 
    public string SomeParam {get; set;} 

    protected override void ProcessRecord() 
    { 
     WriteObject("The param you passed in was: " + SomeParam); 
    } 

} 

Sau đó, bạn sẽ gọi lệnh này từ Powershell một cái gì đó như thế này:

PS>Get-MyCmdlet -SomeParam 'whatever you want' 

Sau đó, để sử dụng MSMQ, có nhiều mẫu trực tuyến về cách thực hiện điều này từ bên trong C#:

Here's just one of them....

+0

Hoàn hảo. Tôi nghĩ rằng tôi sẽ cố gắng tuyến đường này kể từ khi tôi chưa quen với Powershell và nó có vẻ như nó sẽ là một giới thiệu tốt. Cảm ơn! – RubyHaus

+0

Lệnh Cmdlet có vẻ hơi quá mức đối với tác vụ cụ thể này. Một vài dòng lệnh và không có lý do gì để biên dịch bất cứ thứ gì hoặc cài đặt bất cứ thứ gì (bạn phải làm với một Cmdlet). –

+0

Nhưng Cmdlet nên làm gì? –

0

Không có lý do gì bạn không thể sử dụng System.Messaging từ bên trong PowerShell. Chỉ cần tải lắp ráp đúng và bạn có thể tạo/xóa/móc hàng đợi của bạn vào nội dung trái tim của bạn. Tạo một lệnh ghép ngắn tùy chỉnh chắc chắn là một tùy chọn thú vị, nhưng có thể là quá mức cần thiết tùy thuộc vào những gì bạn muốn (một kịch bản đơn giản có thể thực hiện thủ thuật).

6

Có thể giống như. Đó là một chút tiết nhưng nó là để giúp chứng minh rằng PowerShell có thể làm điều này mà không có một CmdLet.

# Loads the assembly into PowerShell (because it's not a pre-loaded one) 
[Reflection.Assembly]::LoadWithPartialName("System.Messaging") | Out-Null 

# This is just an array which could also just be a file 
$queueList = (".\q1", ".\q2", ".\q3", ".\q4") 

# Create the queues by piping the list into the creation function 
# $_ refers to the current obect that the ForEach-Object is on 
$queueList | ForEach-Object { [System.Messaging.MessageQueue]::Create($_) } 
6

Nếu bạn đang sử dụng PowerShell Community Extensions (PSCX), nó có cmdlet để tạo và quản lý MSMQ:

  • Clear-MSMQueue
  • Get-MSMQueue
  • New-MSMQueue
  • Test-MSMQueue
Các vấn đề liên quan