Windows PowerShell
Windows PowerShell là một command-line shell và ngôn ngữ scripting cho phép tự động hóa tác vụ và quản lý cấu hình hệ thống. Các PowerShell cmdlet có thể được thực thi trực tiếp tại cửa sổ lệnh PowerShell hoặc kết hợp lại thành các script PowerShell. PowerShell 5.1 được tích hợp sẵn trong Windows Server 2016 và Windows Server 2019.
Cmdlets
PowerShell sử dụng cmdlet để thực hiện các tác vụ. Cmdlet là các lệnh nhỏ thực hiện một chức năng cụ thể. Bạn có thể kết hợp nhiều cmdlet để thực hiện nhiều tác vụ dưới dạng lệnh dòng hoặc script tự động.
Cmdlet sử dụng quy tắc đặt tên theo dạng động từ/danh từ (verb/noun) được nối bằng dấu gạch ngang (-). Điều này giúp các lệnh dễ đọc, dễ hiểu và dễ ghi nhớ hơn. Ví dụ:
Get-Service
Trong đó:
Lệnh này sẽ hiển thị danh sách tất cả các dịch vụ đang được cài đặt trên máy tính cùng trạng thái của chúng.
Bạn có thể tinh chỉnh kết quả bằng cách thêm các tham số (parameter). Ví dụ:
Get-Service -Name Spooler
Lệnh trên chỉ hiển thị thông tin về dịch vụ Print Spooler.
Nhiều cmdlet có thể được kết hợp với nhau bằng ký tự pipe (|). Pipe cho phép lấy kết quả đầu ra của cmdlet trước làm đầu vào cho cmdlet tiếp theo để lọc, định dạng hoặc xử lý tiếp.
Ví dụ:
Get-Service -Name Spooler | Restart-Service
Lệnh trên sẽ lấy đối tượng dịch vụ Spooler và khởi động lại dịch vụ này.
Đối với các công việc lặp đi lặp lại, bạn có thể lưu các cmdlet thành script PowerShell và chạy thủ công hoặc lên lịch tự động bằng Task Scheduler.
Script PowerShell thường được lưu với phần mở rộng .ps1.
Modules
Nhiều sản phẩm Microsoft như SharePoint, Hyper-V hoặc Exchange có bộ cmdlet riêng dành cho sản phẩm đó.
Các cmdlet này thường được đóng gói thành các module PowerShell. Khi cài đặt ứng dụng, module PowerShell tương ứng cũng thường được cài theo.
Trong một số trường hợp, bạn cần tự nạp module vào môi trường PowerShell bằng cmdlet:
Install-Module
Ví dụ:
PowerShell Integrated Scripting Environment (ISE)
PowerShell ISE là công cụ giao diện đồ họa (GUI) cho phép:
PowerShell ISE có giao diện dạng tab tương tự trình duyệt web, cho phép làm việc với nhiều project cùng lúc.
Giao diện gồm:
Sau khi hoàn thành script, bạn có thể lưu lại trực tiếp từ menu.
PowerShell Direct
Trong môi trường ảo hóa Hyper-V, Microsoft cung cấp tính năng PowerShell Direct.
PowerShell Direct cho phép administrator chạy cmdlet hoặc script PowerShell bên trong máy ảo Hyper-V trực tiếp từ hệ điều hành host mà không cần quan tâm đến:
Điều này giúp quản trị VM Windows Server nhanh chóng và thuận tiện hơn rất nhiều.
Nhiều bạn mới học Windows Server thường nghĩ PowerShell chỉ là “CMD nâng cấp”. Thực tế, PowerShell là nền tảng automation cực kỳ quan trọng trong hệ sinh thái Microsoft hiện đại.
Ngày nay:
Một số lệnh nhập môn rất quan trọng:
Kiểm tra service:
Get-Service
Kiểm tra IP:
Get-NetIPAddress
Kiểm tra process:
Get-Process
Restart service:
Restart-Service -Name Spooler
Xem help:
Get-Help Get-Service
Liệt kê cmdlet:
Get-Command
Nếu đang học MCSA, Azure Administrator hoặc System Engineer, việc làm quen PowerShell từ sớm sẽ giúp:
Trong môi trường enterprise thật, rất nhiều tác vụ quản trị server được tự động hóa bằng PowerShell thay vì thao tác GUI.
Windows PowerShell là một command-line shell và ngôn ngữ scripting cho phép tự động hóa tác vụ và quản lý cấu hình hệ thống. Các PowerShell cmdlet có thể được thực thi trực tiếp tại cửa sổ lệnh PowerShell hoặc kết hợp lại thành các script PowerShell. PowerShell 5.1 được tích hợp sẵn trong Windows Server 2016 và Windows Server 2019.
Cmdlets
PowerShell sử dụng cmdlet để thực hiện các tác vụ. Cmdlet là các lệnh nhỏ thực hiện một chức năng cụ thể. Bạn có thể kết hợp nhiều cmdlet để thực hiện nhiều tác vụ dưới dạng lệnh dòng hoặc script tự động.
Cmdlet sử dụng quy tắc đặt tên theo dạng động từ/danh từ (verb/noun) được nối bằng dấu gạch ngang (-). Điều này giúp các lệnh dễ đọc, dễ hiểu và dễ ghi nhớ hơn. Ví dụ:
Get-Service
Trong đó:
- Get là hành động
- Service là đối tượng được thao tác
Lệnh này sẽ hiển thị danh sách tất cả các dịch vụ đang được cài đặt trên máy tính cùng trạng thái của chúng.
Bạn có thể tinh chỉnh kết quả bằng cách thêm các tham số (parameter). Ví dụ:
Get-Service -Name Spooler
Lệnh trên chỉ hiển thị thông tin về dịch vụ Print Spooler.
Nhiều cmdlet có thể được kết hợp với nhau bằng ký tự pipe (|). Pipe cho phép lấy kết quả đầu ra của cmdlet trước làm đầu vào cho cmdlet tiếp theo để lọc, định dạng hoặc xử lý tiếp.
Ví dụ:
Get-Service -Name Spooler | Restart-Service
Lệnh trên sẽ lấy đối tượng dịch vụ Spooler và khởi động lại dịch vụ này.
Đối với các công việc lặp đi lặp lại, bạn có thể lưu các cmdlet thành script PowerShell và chạy thủ công hoặc lên lịch tự động bằng Task Scheduler.
Script PowerShell thường được lưu với phần mở rộng .ps1.
Modules
Nhiều sản phẩm Microsoft như SharePoint, Hyper-V hoặc Exchange có bộ cmdlet riêng dành cho sản phẩm đó.
Các cmdlet này thường được đóng gói thành các module PowerShell. Khi cài đặt ứng dụng, module PowerShell tương ứng cũng thường được cài theo.
Trong một số trường hợp, bạn cần tự nạp module vào môi trường PowerShell bằng cmdlet:
Install-Module
Ví dụ:
- Hyper-V module
- Active Directory module
- Exchange module
- Azure module
PowerShell Integrated Scripting Environment (ISE)
PowerShell ISE là công cụ giao diện đồ họa (GUI) cho phép:
- Chạy lệnh PowerShell
- Viết script
- Debug script
- Kiểm tra script
PowerShell ISE có giao diện dạng tab tương tự trình duyệt web, cho phép làm việc với nhiều project cùng lúc.
Giao diện gồm:
- Khung trên: nơi viết script
- Khung dưới: hiển thị kết quả thực thi
- Khung bên phải: danh sách cmdlet có sẵn
Sau khi hoàn thành script, bạn có thể lưu lại trực tiếp từ menu.
PowerShell Direct
Trong môi trường ảo hóa Hyper-V, Microsoft cung cấp tính năng PowerShell Direct.
PowerShell Direct cho phép administrator chạy cmdlet hoặc script PowerShell bên trong máy ảo Hyper-V trực tiếp từ hệ điều hành host mà không cần quan tâm đến:
- Network connectivity
- Firewall
- Remote management configuration
Điều này giúp quản trị VM Windows Server nhanh chóng và thuận tiện hơn rất nhiều.
Nhiều bạn mới học Windows Server thường nghĩ PowerShell chỉ là “CMD nâng cấp”. Thực tế, PowerShell là nền tảng automation cực kỳ quan trọng trong hệ sinh thái Microsoft hiện đại.
Ngày nay:
- Windows Server sử dụng PowerShell rất nhiều
- Azure automation dựa mạnh vào PowerShell
- Exchange, Hyper-V, Active Directory đều có PowerShell module riêng
- DevOps và Infrastructure as Code cũng tận dụng PowerShell extensively
Một số lệnh nhập môn rất quan trọng:
Kiểm tra service:
Get-Service
Kiểm tra IP:
Get-NetIPAddress
Kiểm tra process:
Get-Process
Restart service:
Restart-Service -Name Spooler
Xem help:
Get-Help Get-Service
Liệt kê cmdlet:
Get-Command
Nếu đang học MCSA, Azure Administrator hoặc System Engineer, việc làm quen PowerShell từ sớm sẽ giúp:
- Quản trị nhanh hơn
- Automation tốt hơn
- Dễ chuyển sang Cloud/DevOps
- Scale hệ thống hiệu quả hơn
Trong môi trường enterprise thật, rất nhiều tác vụ quản trị server được tự động hóa bằng PowerShell thay vì thao tác GUI.