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
- Tìm hiểu cách sử dụng Remoting trong PowerShell
- Sử dụng PowerShell để lấy thông tin máy tính
- Làm việc với các bộ sưu tập trong PowerShell
Và hãy theo dõi phần còn lại của loạt phim trong tuần.
Biến
Hầu hết các ngôn ngữ lập trình cho phép sử dụng các biến, mà chỉ đơn giản là các thùng chứa giữ giá trị. Trong PowerShell, chúng ta cũng có các biến và chúng rất dễ sử dụng. Đây là cách tạo một biến gọi là "FirstName" và cung cấp cho nó giá trị "Taylor".
$FirstName = “Taylor”
Điều đầu tiên mà hầu hết mọi người dường như hỏi là tại sao chúng ta đặt một ký hiệu đô la trước tên biến, và đó thực sự là một câu hỏi rất hay. Thực sự, ký hiệu đô la chỉ là một gợi ý nhỏ cho trình bao mà chúng tôi muốn truy cập nội dung của biến (nghĩ nội dung bên trong vùng chứa) chứ không phải chính vùng chứa đó. Trong PowerShell, tên biến không bao gồm ký hiệu đô la, có nghĩa là trong ví dụ trên, tên biến thực sự là "FirstName".
Trong PowerShell, bạn có thể xem tất cả các biến mà bạn đã tạo trong biến PSDrive.
gci variable:
Remove-Item Variable:FirstName
Các biến không phải chứa một đối tượng đơn lẻ; bạn có thể dễ dàng lưu trữ nhiều đối tượng trong một biến. Ví dụ, nếu bạn muốn lưu trữ một danh sách các tiến trình đang chạy trong một biến, bạn có thể chỉ định nó cho đầu ra của quá trình Get-Process.
$Proc = Get-Process
Bí quyết để hiểu điều này là hãy nhớ rằng phía bên tay phải của dấu bằng luôn được đánh giá trước tiên. Điều này có nghĩa là bạn có thể có toàn bộ đường ống ở phía bên tay phải nếu bạn muốn.
$CPUHogs = Get-Process | Sort CPU -Descending | select -First 3
Biến CPUHogs giờ đây sẽ chứa ba tiến trình đang chạy sử dụng CPU nhiều nhất.
$CPUHogs.Kill()
Mà sẽ giết tất cả ba quá trình trong bộ sưu tập. Nếu bạn muốn truy cập một đối tượng trong biến, bạn cần xử lý nó như một mảng.
$CPUHogs[0]
Làm như vậy sẽ cung cấp cho bạn đối tượng đầu tiên trong bộ sưu tập.
Đừng bị bắt!
Các biến trong PowerShell được gõ nhẹ theo mặc định có nghĩa là chúng có thể chứa bất kỳ loại dữ liệu nào, điều này dường như bắt gặp những người mới vào PowerShell mọi lúc!
$a = 10
$b = ‘20’
Vì vậy, chúng tôi có hai biến, một biến chứa một chuỗi và một số nguyên khác. Vậy điều gì sẽ xảy ra nếu bạn thêm chúng? Nó thực sự phụ thuộc vào thứ tự bạn thêm chúng vào.
$a + $b = 30
Trong khi
$b + $a = 2010
Trong ví dụ đầu tiên, toán hạng đầu tiên là một số nguyên, $ a, vì vậy PowerShell nghĩ rằng bạn đang cố gắng làm toán và do đó cố chuyển đổi mọi toán hạng khác thành số nguyên. Tuy nhiên, trong ví dụ thứ hai toán hạng đầu tiên là một chuỗi, vì vậy PowerShell chỉ chuyển đổi phần còn lại của toán hạng thành chuỗi và nối chúng lại. Những người viết kịch bản nâng cao hơn ngăn chặn kiểu này bằng cách truyền biến đến kiểu mà họ đang mong đợi.
[int]$Number = 5 [int]$Number = ‘5’
Cả hai bên trên sẽ dẫn đến biến số chứa một đối tượng số nguyên với giá trị là 5.
Đầu vào và đầu ra
Vì PowerShell có ý định tự động hóa mọi thứ, bạn sẽ muốn tránh nhắc người dùng cung cấp thông tin bất cứ khi nào có thể. Như đã nói, sẽ có những lúc bạn không thể tránh nó, và trong những lần đó chúng ta có lệnh Read-Host. Sử dụng nó rất đơn giản:
$FirstName = Read-Host –Prompt ‘Enter your first name’
Write-Output “How-To Geek Rocks!”