Geek School: Học cách sử dụng Remoting trong PowerShell

Mục lục:

Geek School: Học cách sử dụng Remoting trong PowerShell
Geek School: Học cách sử dụng Remoting trong PowerShell

Video: Geek School: Học cách sử dụng Remoting trong PowerShell

Video: Geek School: Học cách sử dụng Remoting trong PowerShell
Video: Đây chính là NGUYÊN NHÂN LÀM CHO ổ C của bạn nhanh đầy - YouTube 2024, Có thể
Anonim
Một trong những tính năng tốt nhất mà PowerShell cung cấp là khả năng quản lý từ xa Máy chủ của bạn. Nó thậm chí còn cho phép bạn quản lý một loạt chúng cùng một lúc.
Một trong những tính năng tốt nhất mà PowerShell cung cấp là khả năng quản lý từ xa Máy chủ của bạn. Nó thậm chí còn cho phép bạn quản lý một loạt chúng cùng một lúc.

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

Bạn sẽ cần phải trả lời có cho tất cả các lời nhắc. Khi bạn chạy Enable-PSRemoting, một vài thay đổi được thực hiện cho PC của bạn:
Bạn sẽ cần phải trả lời có cho tất cả các lời nhắc. Khi bạn chạy Enable-PSRemoting, một vài thay đổi được thực hiện cho PC của bạn:
  • 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

Tuy nhiên, chúng tôi khuyên bạn nên thay đổi vị trí mạng của mình.
Tuy nhiên, chúng tôi khuyên bạn nên thay đổi vị trí mạng của mình.

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”

Dấu nhắc sẽ nhận được một tiền tố biểu thị máy mà bạn đang chạy các lệnh ghép ngắn.
Dấu nhắc sẽ nhận được một tiền tố biểu thị máy mà bạn đang chạy các lệnh ghép ngắn.
Từ đây bạn có thể thực sự xử lý dấu nhắc như thể bạn đang ngồi ở máy từ xa. Ví dụ, nếu bạn muốn xem tất cả các tập tin trên ổ đĩa C:, bạn có thể làm một cách đơn giản:
Từ đây bạn có thể thực sự xử lý dấu nhắc như thể bạn đang ngồi ở máy từ xa. Ví dụ, nếu bạn muốn xem tất cả các tập tin trên ổ đĩa C:, bạn có thể làm một cách đơn giản:

Get-ChildItem –Path C:

Nếu bạn đến từ một nền tảng Linux, bạn có thể nghĩ đến việc sử dụng phương thức từ xa này đến một phương thức từ xa làm thay thế PowerShell cho SSH.
Nếu bạn đến từ một nền tảng Linux, bạn có thể nghĩ đến việc sử dụng phương thức từ xa này đến một phương thức từ xa làm thay thế PowerShell cho SSH.

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}

Vì lệnh được thực hiện song song trên tất cả các máy, bạn sẽ cần một số cách để xem PC nào có được kết quả nhất định. Bạn có thể làm điều này bằng cách nhìn vào thuộc tính PSComputerName.
Vì lệnh được thực hiện song song trên tất cả các máy, bạn sẽ cần một số cách để xem PC nào có được kết quả nhất định. Bạn có thể làm điều này bằng cách nhìn vào thuộc tính PSComputerName.
Khi bạn sử dụng Invoke-Command, bạn không còn có các đối tượng mà bạn có thể mong đợi trong Pipeline nữa. Bạn thấy, để PowerShell lấy thông tin từ máy từ xa về máy của bạn, họ cần một số cách để biểu diễn các đối tượng mà lệnh bạn chạy trên đầu ra của máy từ xa. Những ngày này dường như cách được chọn để biểu diễn cấu trúc dữ liệu phân cấp là sử dụng XML, có nghĩa là khi bạn phát lệnh bằng cách sử dụng lệnh Invoke, kết quả đầu tiên được tuần tự hóa thành XML trước khi được gửi trở lại máy tính của bạn.Khi họ quay trở lại máy tính của bạn, họ được deserialized trở lại vào một đối tượng; các Gotcha ở đây là khi chúng được deserialized, tất cả các phương pháp, ngoại trừ ToString () phương pháp, rằng các đối tượng đã bị tước đi từ nó.
Khi bạn sử dụng Invoke-Command, bạn không còn có các đối tượng mà bạn có thể mong đợi trong Pipeline nữa. Bạn thấy, để PowerShell lấy thông tin từ máy từ xa về máy của bạn, họ cần một số cách để biểu diễn các đối tượng mà lệnh bạn chạy trên đầu ra của máy từ xa. Những ngày này dường như cách được chọn để biểu diễn cấu trúc dữ liệu phân cấp là sử dụng XML, có nghĩa là khi bạn phát lệnh bằng cách sử dụng lệnh Invoke, kết quả đầu tiên được tuần tự hóa thành XML trước khi được gửi trở lại máy tính của bạn.Khi họ quay trở lại máy tính của bạn, họ được deserialized trở lại vào một đối tượng; các Gotcha ở đây là khi chúng được deserialized, tất cả các phương pháp, ngoại trừ ToString () phương pháp, rằng các đối tượng đã bị tước đi từ nó.
Image
Image

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.

Bài tập về nhà

Đọc những bí mật của PowerShell Remoting ebook của Don Jones.

Đề xuất: