Hãy nhớ đọc các bài viết trước trong loạt bài này:
- Tìm hiểu cách tự động hóa Windows bằng PowerShell
- Học cách sử dụng Cmdlets trong PowerShell
- Học cách sử dụng các đối tượng trong PowerShell
- Học cách định dạng, lọc và so sánh trong PowerShell
Và hãy theo dõi phần còn lại của loạt phim trong tuần.
Remoting là gì?
Quản lý hàng loạt các máy chủ của bạn có thể tẻ nhạt và nếu bạn phải thay đổi cấu hình IIS trên 50 máy chủ web trước đó, bạn sẽ biết ý tôi là gì. Đây là các loại tình huống khi PowerShell Remoting và khả năng kịch bản của ngôn ngữ có thể đến để giải cứu. Sử dụng HTTP hoặc HTTPS an toàn hơn, PowerShell Remoting cho phép bạn gửi các lệnh tới một máy từ xa trên mạng của bạn. Máy sau đó chạy các lệnh và gửi đầu ra lại cho bạn, lần lượt được hiển thị trên màn hình của bạn.
Hãy lấy kỹ thuật
Cốt lõi của PowerShell Remoting là một dịch vụ Windows, dịch vụ Windows Remote Management hoặc WinRM, vì nó đã được biết đến. Sử dụng WinRM, bạn có thể thiết lập một hoặc nhiều cấu hình phiên (còn được gọi là điểm cuối), đó là các tệp cơ bản chứa thông tin về trải nghiệm bạn muốn cung cấp cho người kết nối với cá thể PowerShell từ xa của bạn. Cụ thể hơn, bạn có thể sử dụng tệp cấu hình phiên để xác định ai có thể và không thể kết nối với cá thể, lệnh và tập lệnh nào họ có thể chạy cũng như ngữ cảnh bảo mật nào phải chạy trong phiên. Sử dụng dịch vụ WinRM, bạn cũng thiết lập “người nghe”, nghe các yêu cầu PowerShell đến. Những “người nghe” này có thể là HTTP hoặc HTTPS và có thể bị ràng buộc vào một địa chỉ IP duy nhất trên máy của bạn. Khi bạn mở một kết nối PowerShell với một máy khác (về mặt kỹ thuật, điều này được thực hiện bằng giao thức WS-MAN, dựa trên HTTP), kết nối này liên kết với một trong các “trình nghe” này. "Người nghe" sau đó chịu trách nhiệm gửi lưu lượng truy cập đến ứng dụng được liên kết với tệp cấu hình phiên thích hợp; ứng dụng (thông thường PowerShell nhưng bạn có thể có các ứng dụng lưu trữ khác nếu bạn muốn), sau đó chạy lệnh và cung cấp kết quả trở lại thông qua "người nghe" trên mạng và quay lại máy của bạn.
Hãy chỉ cho tôi cách
Điều đầu tiên bạn cần làm là kích hoạt Remoting trên máy bạn muốn kết nối. Điều này có thể được thực hiện bằng cách chạy như sau:
Enable-PSRemoting
- Dịch vụ WinRM khởi động.
- Dịch vụ WinRM thay đổi từ chế độ Khởi động thủ công sang Tự động.
- Nó tạo ra một trình nghe HTTP bị ràng buộc với tất cả các card mạng của bạn.
- Nó cũng tạo ra một ngoại lệ tường lửa gửi đến cho giao thức WS-MAN.
- Một số cấu hình phiên mặc định được tạo
Nếu bạn đang chạy Windows 7 và vị trí thẻ mạng của bạn được đặt thành Công khai, việc bật tính năng PowerShell Remoting sẽ không thành công. Để khắc phục sự cố, chỉ cần chuyển sang vị trí Mạng gia đình hoặc Cơ quan. Ngoài ra, bạn có thể bỏ qua việc kiểm tra mạng bằng cách sử dụng như sau:
Enable-PSRemoting –SkipNetworkProfileCheck
Có hai cách để kết nối với một máy khác bằng PowerShell. Có phương pháp 1-1, rất giống với phương pháp SSH, và sau đó có phương pháp từ một đến nhiều.
Sử dụng phiên PowerShell
Cách đầu tiên để kết nối với một máy từ xa bằng PowerShell là sử dụng một phiên gọi là Phiên PowerShell. Đơn giản chỉ cần đặt một phiên cho phép bạn chạy các lệnh trên máy từ xa trong một thời trang tương tác nhiều giống như bạn sẽ trên máy tính của riêng bạn. Để mở một phiên, chỉ cần nhập như sau:
Enter-PSSession –ComputerName “Darlah”
Get-ChildItem –Path C:
Sử dụng lệnh gọi
Cách thứ hai bạn có thể sử dụng PowerShell trên một máy từ xa là sử dụng Invoke-Command. Ưu điểm của việc sử dụng Invoke-Command xuất phát từ thực tế là bạn có thể thực hiện cùng một lệnh trên nhiều máy cùng một lúc. Như bạn có thể tưởng tượng, điều này đặc biệt hữu ích khi bạn muốn làm một cái gì đó như thu thập các bản ghi sự kiện từ các máy chủ của bạn. Invoke-Command theo cú pháp sau:
Invoke-Command -ComputerName Darlah,localhost -ScriptBlock {Get-EventLog Application -Newest 2}
Lưu ý: Có một số ngoại lệ đối với quy tắc này, ví dụ như hầu hết các kiểu nguyên thủy như số nguyên có thể được deserialized với các phương pháp của nó bao gồm. Ngoài ra còn có một quá trình gọi là Rehydration, nơi một số phương pháp có thể được thêm trở lại các đối tượng deserialized. Vì vậy, hãy cẩn thận và nhớ Get-Member là bạn của bạn.