Quản lý LMhost bằng PowerShell
Tôi đã làm việc trong lĩnh vực CNTT được một thời gian dài. Thật thú vị khi thấy ngành này đã thay đổi như thế nào và nó thích ứng như thế nào với các công nghệ mới. Mặc dù vậy, tôi đánh giá cao những tình huống mà đôi khi “cách cũ” vẫn là cách tốt nhất. Ví dụ: chúng tôi không còn thực sự cần tệp lmhosts cổ xưa để giúp phân giải tên NETBIOS thành địa chỉ IP. Tuy nhiên, có thể có một số trường hợp lmhost giải quyết được vấn đề và sau đó quản lý nó bằng PowerShell sẽ không tốt sao?
Tôi đang thực hiện một dự án liên quan đến tự động hóa môi trường giảng dạy của mình bằng Hyper-V và DSC. Một trong những tác vụ yêu cầu sử dụng tính năng từ xa để kết nối với máy ảo mới, nhưng máy này nằm trên mạng NAT riêng nên việc phân giải tên đôi khi là một vấn đề. Đây là lúc PowerShell Direct rất hữu ích vì nó cho phép bạn thiết lập phiên từ xa qua bus VM. Tuy nhiên, hiện tại tính năng này chỉ hoạt động từ máy chủ Windows Server 2016 Hyper-V đến máy ảo Windows 10 hoặc Windows Server 2016.
Vì vậy, tôi đảm bảo máy ảo của mình có IPAddress mà sau đó tôi có thể sử dụng với New-PSSession. Nhưng đến một lúc nào đó, tôi nhận ra rằng mình muốn sử dụng tên máy tính, do đó có tên này để phân giải tên nhanh chóng và bẩn thỉu. Đó là rất nhiều câu chuyện phía sau có lẽ không liên quan.
Tệp lmhosts là một tệp văn bản thuần túy nằm trong C:\Windows\System32\Drivers\etc và được gọi là lmhosts mà không có bất kỳ phần mở rộng nào. Rất có thể bạn không có mặc dù bạn sẽ thấy tệp lmhosts.sam dùng làm mẫu. Về cơ bản, tệp này là một danh sách văn bản gồm địa chỉ IP và tên máy tính.
172.16.30.200 chi-dc01
172.16.30.201 chi-dc02
172.16.30.203 chi-dc04
172.16.30.212 chi-hvr2
Điều tôi muốn là một cách PowerShell để quản lý tệp này. Tôi đã tạo một mô-đun đơn giản có tên MyLmhost. Nó có 3 lệnh đơn giản.
Các lệnh sử dụng kết hợp Get-Content với các biểu thức thông thường để phân tích địa chỉ IP và tên máy tính và tạo đối tượng.
Tôi có thể dễ dàng tạo các mục mới:
Nếu mục nhập không tồn tại, nó sẽ được thêm vào, nếu không lệnh này sẽ cập nhật mục nhập bằng địa chỉ IP hoặc tên mới. Và tất nhiên tôi có thể xóa một mục.
Bất cứ khi nào bạn thực hiện thay đổi đối với tập tin, nó sẽ tạo một bản sao lưu. Bản sao lưu liên tục bị ghi đè mỗi khi bạn thực hiện thay đổi.
Tôi cho rằng nhiều người trong số các bạn có thể không có nhu cầu thực tế về mô-đun này nhưng bạn có thể thấy mã này mang tính giáo dục. Bạn có thể tìm thấy nó trên Github tại https://github.com/jdhitsolutions/Mylmhost. Nếu bạn có bất kỳ câu hỏi hoặc vấn đề nào, hãy đăng vấn đề lên kho GitHub.
Thưởng thức!
Cập nhật: Bạn có thể tìm thấy mô-đun trên Thư viện PowerShell. Chạy mô-đun cài đặt mylmhost.