You are on page 1of 8

Sử dụng Windows Server 2008 Powershell để thực hiện

các lệnh về mạng - 13/5/2008 13h:18

David Davis

Có nhiều thứ bạn vẫn thực hiện hàng ngày trong khi quản trị một mạng Windows
nhưng nếu bị hỏi thực hiện những công việc đó từ dòng lệnh thì hầu hết các quản trị
viên Windows có thể cảm thấy đấy là một yêu cầu khó. Windows luôn luôn yếu khi
nói đến các công cụ dòng lệnh, tuy nhiên sự việc này đã thay đổi với sự xuất hiện
của Windows Powershell. Powershell (trước vẫn được gọi là PS) có thể thực hiện nhiều
thứ mà trước đó là hoàn toàn không thể. Trong bài này, chúng tôi sẽ giới thiệu cho các
bạn về Powershell và cách nó có thể giúp bạn thực hiện một số chức năng trong quản trị
mạng nói chung từ cửa sổ lệnh.

Powershell là gì?

Powershell là một tính năng có thể cài đặt trong Windows Server 2008. Để cài đặt
Powershell, bạn phải cài đặt tính năng Powershell trong Add Features Wizard. Chỉ cần
mất một vài phút để cài đặt và khi tính năng này được cài đặt bạn có thể truy cập vào một
ngôn ngữ kịch bản dòng lệnh khá thú vị. Không giống như các ngôn ngữ kịch bản khác
trong Windows, Powershell được thiết kế để cho các quản trị viên hệ thống. Powershell
sử dụng .NET và “cmdlets” (hoặc “command-lets”) để thực hiện các công việc của nó.
Như một người dùng Powershell, bạn có thể sử dụng bản thân cmdlet hoặc có thể kết nối
chúng cùng để thực hiện nhiều nhiệm vụ mạnh hơn.

Khi đã cài đặt Powershell, bạn sẽ có thể vào Start -> All Programs -> Windows
Powershell 1.0, và kích Windows PowerShell. Ở đây, bạn sẽ thấy một màn hình CLI
màu xanh lam xuất hiện trông như hình dưới đây:
Hình 1: Cửa sổ lệnh của Windows Powershell

Bạn luôn có thể biết mình đang ở trong Powershell vì “PS” nằm ở đầu dòng nhắc lệnh:

PS C:\Users\Administrators

Lúc này bạn đã cài đặt Powershell và đang ở trong cửa sổ lệnh, chúng tôi sẽ giới thiệu
cho các bạn một số nhiệm vụ về mạng chung có thể thực hiện với Powershell.

Liệt kê địa chỉ IP trên máy chủ

Để liệt kê địa chỉ IP trên Windows 2008 Server, bạn sử dụng chuỗi lệnh dưới đây:

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter


IPEnabled=TRUE -ComputerName . | Select-Object -Property IPAddress

Đây là kết quả sau khi thực hiện câu lệnh trên với Windows Server 2008:

Hình 2: Liệt kê địa chỉ IP với Windows Powershell


Như những gì bạn thấy, đầu ra cho chúng ta thấy rằng có một adaptor với địa chỉ IP V4
và một địa chỉ Ipv6 trên Windows Server 2008. Bạn có thể thực hiện những gì khi kết
hợp với các chức năng kịch bản khác.

Như trong hướng dẫn sử dụng cho người dùng Powershell, đầu ra là một mảng và bạn chỉ
thấy địa chỉ IP bằng cách hướng đầu ra đến “Select-Object” ( sau khi vô hiệu hóa IPV6),
giống như dưới đây:

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter


IPEnabled=TRUE -ComputerName . | Select-Object -ExpandProperty
IPAddress

Hình 3: Liệt kê địa chỉ IP chỉ với Windows Powershell

Liệt kê cấu hình adaptor mạng với Powershell

Để hiện cấu hình cơ bản của adaptor mạng, bạn có thể sử dụng lệnh sau:

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter


IPEnabled=TRUE –ComputerName

Tuy bài này tập trung về việc sử dụng Powershell trong Windows Server 2008 nhưng nó
cũng có thể được sử dụng trong Windows XP, Vista hoặc Windows Server 2003. Trong
thực tế, đây là đầu ra mẫu cho lệnh ở trên, được thực hiện trên máy trạm Windows XP:
Hình 4: Powershell hiển thị cấu hình adaptor mạng trong Windows XP

Ping máy tính với Powershell

Trong khi Powershell vẫn có thể thực hiện tất cả các lệnh thông thường của Windows
(như lệnh ping), thì sức mạng của Powershell còn thể hiện ở chỗ bạn có thể lấy đầu ra đó
và thay đổi nó một cách dễ dàng.

Đây là một ví dụ về điều đó, nhờ giúp đỡ trong hướng dẫn người dùng của Windows
Powershell. Trong ví dụ này, đầu ra của Win32_PingStatus được phân tách bằng Select-
Object. Trong trường hợp này, đầu ra chỉ thể hiện thời gian đáp trả và mã trạng thái.

Đây là lệnh vừa được sử dụng:

Get-WmiObject -Class Win32_PingStatus -Filter "Address='127.0.0.1'"


-ComputerName . | Select-Object -Property
Address,ResponseTime,StatusCode

Và đây là đầu ra trên máy tính:


Hình 5: Đầu ra của Powershell thể hiện trạng thái ping với Select-Object

Chia sẻ thư mục với Windows Powershell

Quả thực phải nói rằng sử dụng các lệnh Powershell không luôn luôn dễ dàng như các
lệnh Windows đang tồn tại mà bạn vẫn quen dùng. Đây là một ví dụ.

Lệnh Powershell dưới đây sẽ chia sẻ một thư mục có đường dẫn C:\temp như
“davidtemp” và đặt một lệnh trên nó:

(Get-WmiObject -List -ComputerName . | Where-Object -FilterScript


{$_.Name -eq
"Win32_Share"}).InvokeMethod("Create",("C:\temp","davidtemp",0,25,"Davi
d’s Temp Folder"))

Cách khác, bạn có thể chỉ sử dụng lệnh net share như sau:

net share davidtemp=C:\temp /remark:"David’s Temp Shared Folder"

Hình 6: Đầu ra của Powershell và các lệnh chia sẻ thông thường

Lưu ý về cách mà lệnh Powershell đã không làm việc và đưa ra một thông báo lỗi rất khó
chịu.

Còn với lệnh net share thật đơn giản, nó đã làm việc ngay lập tức. Chính vì vậy trong khi
chúng tôi giới thiệu với các bạn về tất cả những gì có thể thực hiện với Powershell, bạn
không nên quên rằng Powershell không những có thể chạy tất cả các lệnh liên quan đến
mạng mà còn trong nhiều trường hợp chúng còn cho phép sử dụng dễ dàng hơn.

Các lệnh phức tạp hơn

Tiếp đến, nếu bạn chỉ thực hiện các lệnh quản trị mạng cơ bản với Powershell thì có thể
chán và không muốn sử dụng nó. Điều đó cũng là vì giống như các ngôn ngữ kịch bản, có
một số chỗ mà bạn cần phải học.

Tuy vậy, khi đã học được cách sử dụng nó thì bạn sẽ có được tất cả những ưu điểm về
hiệu quả cũng như tiết kiệm được thời gian từ một ngôn ngữ mới vừa học được.

Như những gì bạn lưu ý được từ một số ví dụ trước, một trong các tham số cho hầu hết
các lệnh Powershell là “computername”. Khi đặt dấu chấm (“.”) với tư cách là tên máy
tính thì đó là host cục bộ (máy tính của chúng ta). Tuy vậy, chúng ta cũng có thể thay thế
bất kỳ địa chỉ IP hoặc tên máy tính nào trong miền để không chỉ sử dụng các lệnh này
trên máy tính của bạn mà còn tạo các kịch bản mạnh với Powershell để từ đó bạn có thể
chạy trên tất cả các máy tính trong mạng của mình.

Ví dụ, đây là một lệnh kéo tất cả một địa chỉ IP từ máy tính Dell vào một mạng LAN:

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter


IPEnabled=TRUE -ComputerName DELL9400

Đây là kết quả:

Hình 7: Powershell cho kết quả từ việc truy vấn địa chỉ IP của máy tính từ xa

Và đây là màn hình đã được phóng to để hiển thị thông tin bên trong:
Hình 8: Đóng các kết quả Powershell chống truy vấn địa chỉ IP của máy tính từ xa

Chính vì vậy khả năng thực hiện trên các máy tính từ xa là một tính năng chủ yếu của
Powershell nhưng một tính năng khác nữa là khả năng lọc đầu ra và kết hợp đầu ra từ
một lệnh này với một lệnh khác.

Chúng ta sẽ xem vấn đề đó trong một ví dụ:

"127.0.0.1","localhost","research.microsoft.com" | ForEach-Object
-Process {Get-WmiObject -Class Win32_PingStatus -Filter ("Address='" +
$_ + "'") -ComputerName .} | Select-Object -Property
Address,ResponseTime,StatusCode

Trong ví dụ này, danh sách được cung cấp các địa chỉ IP và tên miền. Danh sách đó được
gửi đến “ForEach-Object”. Trên mỗi một đối tượng đó (tên miền hoặc địa chỉ IP), “Get-
WmiObject” PingStatus sẽ được chạy. Đầu ra ping cho mỗi tên miền này sau đó được
phân tách với “Select-Object” và chỉ có địa chỉ, số lần đáp trả và mã trạng thái nơi thể
hiện.

Đây là đầu ra:

Hình 9: Ping sử dụng danh sách bằng cách kết hợp và gửi đầu ra

Chúng tôi nghĩ rằng ví dụ này đã thể hiện được một số sức mạnh của Powershell. Như
những gì bạn thấy, có thể hướng trực tiếp hoặc gián tiếp đầu vào và đầu ra trong các
hướng khác nhau để thực hiện các mục tiêu quản trị hệ thống của bạn.

Cần biết thêm những gì nữa?


Như đã được nói từ trước, bạn hãy lưu ý rằng Powershell không chỉ chạy trên Windows
Server 2008 mà nó còn có thể được sử dụng trong Windows XP, Vista và Server 2003.
Powershell là sản phẩm hoàn toàn miễn phí và bạn có thể download nó một cách dễ dàng
với dung lượng 6MB.

Kết luận

Windows Powershell là một công cụ mạnh. Bài này không thể giải thích tất cả những gì
bạn có thể thực hiện với Powershell nhưng chúng tôi hy vọng nó cũng cho bạn có được ý
tưởng về những gì có thể và tạo cảm hứng để nghiên cứu thêm về Powershell. Thêm vào
đó, mỗi ngày chúng ta lại có thêm nhiều sách mới, các lớp và rất nhiều trang web minh
chứng về sự hữu dụng của Powershell đối với các quản trị viên Windows. Với những
quản trị viên Windows đang sử dụng giao diện GUI, họ sẽ tốn nhiều thời gian nữa đối với
Powershell để được chấp thuận trong các công ty, nơi mà nó không ngay lập tức cần thiết.
Tuy nhiên chúng tôi tin tưởng rằng các quản trị viên sẽ sử dụng Powershell để tạo nhiều
kịch bản ngắn hơn để thực hiện chức năng nào đó, bên cạnh đó có thể kết hợp với kịch
bản khác để thực hiện các chức năng phức tạp hơn.

You might also like