2008-10-25 19 views
9

Tôi có một ứng dụng C# Windows chạy một dịch vụ. Tôi muốn tận dụng PowerShell để cung cấp một giao diện quản lý dòng lệnh để quản lý dịch vụ đang chạy của tôi.Gửi các lệnh quản trị tới Dịch vụ Windows C của tôi bằng PowerShell CmdLets của riêng mình

Từ quan điểm của tôi, tôi đang cố gắng để cung cấp giao diện quản trị cùng a la Exchange 2007.

Bạn có bất cứ đề nghị hoặc mẫu mã trên như thế nào để bắt đầu/thiết kế các cmdlet quản lý để "kết nối" với dịch vụ đang chạy để truy vấn hoặc gửi các lệnh quản trị?

Làm cách nào để truy cập trạng thái thời gian chạy nội bộ của dịch vụ từ dòng lệnh powershell? Ví dụ, tôi muốn thực hiện một lệnh ghép ngắn gọi là Get-ConnectionsInfo để tìm hiểu xem có bao nhiêu kết nối gửi ra dịch vụ Windows của tôi đang sử dụng khi lệnh ghép ngắn được thực hiện.

Ví dụ thực tế hoặc liên kết web với ví dụ sẽ được hoan nghênh hơn.

Cảm ơn, Robert

+0

Dịch vụ có chạy trên cùng một máy trong đó (các) tập lệnh sẽ được thực thi không? –

+0

Trong trường hợp này có, nhưng trong các trường hợp khác, nó có thể chạy trên máy chủ sản xuất và lệnh ghép ngắn có thể được cài đặt trên một máy "Hoạt động" khác được sysadmins sử dụng để quản lý các dịch vụ từ xa. –

Trả lời

1

Điều quan trọng ở đây là bắt đầu bằng cách viết một API mà bạn có thể truy cập từ .Net, sau đó bạn có thể dễ dàng bao bọc các lệnh gọi API này vào một DLL để lộ các lớp là lệnh ghép ngắn PowerShell. Nếu bạn muốn ai đó có thể quản lý dịch vụ của bạn từ xa thì tôi nghĩ có lẽ điều tốt nhất là tạo một dịch vụ webservice hoặc WCF thực hiện điều này và sau đó bạn có thể bọc nó trong PowerShell. Nếu bạn có một cái nhìn về codeplex, bạn sẽ tìm thấy một số ví dụ về quản trị các dịch vụ dựa trên web từ xa như GoGrid và SQL Data Services sẽ cung cấp cho bạn một số mã mẫu để giúp bạn bắt đầu.

2

Một giải pháp sẽ cho dịch vụ Windows của bạn để lộ một giao diện quản trị thông qua WCF. Lệnh PowerShell của bạn sẽ sử dụng dịch vụ WCF này để lấy thông tin và làm cho Windows Service thực hiện các hành động.

0

Một cách khác để hiển thị trạng thái nội bộ của Dịch vụ Windows. Bạn có thể phơi bày thông tin thông qua WMI có thể được sử dụng từ PowerShell hoặc lệnh PowerShell của bạn.

Tôi không chắc chắn liệu bạn có thể bảo dịch vụ của mình thực hiện các hành động thông qua WMI hay không nhưng ít nhất bạn cũng có thể rút ra trạng thái.

0

Phương án thay thế thứ ba có thể là biến Dịch vụ Windows thành PowerShell content provider. Tuy nhiên, tôi chưa bao giờ làm một bản thân mình vì vậy tôi không chắc liệu chúng có phù hợp để lưu trữ trong một Dịch vụ Windows hay không, vì dịch vụ này có thể không hoạt động mọi lúc.

Các vấn đề liên quan