2013-08-01 41 views
6

Có quá nhiều câu hỏi và câu trả lời về cách để thực thi tập lệnh PowerShell từ mã C#, nhưng tôi muốn biết chính xác runspace/pipeline thực hiện việc thực thi của tệp .ps1 như thế nào.Làm thế nào để chạy một đường dẫn/đường dẫn C# thực thi kịch bản PowerShell?

Ngữ cảnh mà tôi yêu cầu là: Tôi đã xây dựng một giao diện người dùng asp.net cơ bản cho tập lệnh PowerShell thiết lập trang web mới. Nó tạo ra các trang web trong IIS và thiết lập các thư mục wwwroot, các thư mục log, một người dùng AD và mọi thứ khác mà nó cần. Nó hoạt động hoàn hảo khi tôi chạy nó như một admin trong PowerShell. Tuy nhiên, khi tôi chạy nó thông qua đường ống C# của tôi, nó phá vỡ đường ống với một ngoại lệ ràng buộc tham số.

Tôi không có câu trả lời cho vấn đề cụ thể này, tôi chỉ đang tìm cách giải thích cách thức đường dẫn thực hiện tệp của tôi để tôi có thể hiểu rõ hơn chính xác những gì đang diễn ra.

Trả lời

1

Bạn đã thử sử dụng ILSpy hoặc mở lớp học trong Chế độ xem lớp để xem mã cho lớp học? Tôi làm điều này tất cả thời gian để xem cách Microsoft triển khai một lớp học cụ thể. Tôi sẽ dán mã ở đây nếu nó là một câu trả lời ngắn, nhưng có rất nhiều để System.Management.Automation.Runspaces hoặc Microsoft.Powershell không gian tên. Hãy xem bản thân, và bạn sẽ có thể thấy chính xác cách Microsoft triển khai thực hiện các kịch bản Powershell.

Hy vọng điều này sẽ hữu ích.

+0

Cảm ơn Adam, tôi đã thực hiện việc này nhưng không cung cấp thêm bất kỳ thông tin nào về cách tệp được thực thi. Hầu hết các phương pháp đều theo các dòng sau: 'Bộ sưu tập công khai Gọi() { bằng cách sử dụng (Pipeline._trace.TraceMethod()) trả về this.Invoke ((IEnumerable) null); } Bộ sưu tập tóm tắt công khai Gọi (đầu vào IEnumerable); ' – harrietgrace

1

Đó không phải là giải thích đầy đủ về cách hoạt động của không gian hoạt động, nhưng tôi đã written a blog post bao gồm các bit chính.

Cũng là một đoạn từ one of the msdn pages on how powershell works:

Thời gian chạy Powershell được gọi như một runspace và ý chí, theo mặc định, quá trình lệnh đồng bộ và cung cấp những kết quả xử lý cho các ứng dụng máy chủ để họ có thể trả lại cho người dùng.

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