Tài liệu tham khảo PowerShell có thể tìm kiếm và in được — cmdlet, pipeline, biến, tệp, vòng lặp, hàm, đối tượng và quản trị. Miễn phí.

Trợ giúp & khám phá

12
Get-Help Get-Process
Hiển thị trợ giúp cho một cmdlet
Get-Help Get-Process -Examples
Hiển thị ví dụ sử dụng cho một cmdlet
Get-Help Get-Process -Full
Hiển thị trợ giúp đầy đủ kèm tham số
Get-Help about_Functions
Đọc một chủ đề khái niệm about_
Update-Help
Tải các file trợ giúp mới nhất
Get-Command -Noun Process
Liệt kê cmdlet tác động lên một danh từ
Get-Command -Verb Get
Liệt kê cmdlet dùng một động từ cho trước
Get-Command *service*
Tìm lệnh theo tên ký tự đại diện
Get-Process | Get-Member
Liệt kê property và method của đối tượng
Get-Alias ls
Hiển thị lệnh mà một alias phân giải tới
Get-Alias -Definition Get-ChildItem
Liệt kê mọi alias cho một cmdlet
$PSVersionTable
Hiển thị phiên bản và ấn bản PowerShell

Biến & kiểu

13
$x = 5
Gán một giá trị cho một biến
[int]$n = '42'
Khai báo một biến định kiểu mạnh
$null
Giá trị null / rỗng
$true; $false
Hằng boolean
$arr = @(1, 2, 3)
Tạo một mảng
$arr += 4
Nối một phần tử vào mảng
$arr[0]; $arr[-1]
Lấy phần tử mảng đầu và cuối theo chỉ số
$hash = @{ Name = 'Ann'; Age = 30 }
Tạo một hashtable
$hash['Name']; $hash.Name
Đọc một giá trị hashtable theo khóa
$env:PATH
Đọc một biến môi trường
$env:MY_VAR = 'value'
Đặt một biến môi trường cho phiên
Get-Variable
Liệt kê mọi biến đã định nghĩa
[math]::Round(3.14159, 2)
Gọi một method tĩnh .NET

Pipeline & lọc

12
Get-Process | Where-Object { $_.CPU -gt 10 }
Lọc đối tượng theo một điều kiện
Get-Process | ? CPU -gt 10
Lọc bằng alias ? và cú pháp rút gọn
Get-Process | ForEach-Object { $_.Name }
Chạy một khối script cho mỗi đối tượng
Get-Process | % { $_.Kill() }
Lặp bằng alias %
Get-Process | Select-Object Name, Id
Chỉ giữ các property cụ thể
Get-Process | Select-Object -First 5
Lấy N đối tượng đầu tiên
Get-Process | Sort-Object CPU -Descending
Sắp xếp đối tượng theo một property
Get-Process | Group-Object Company
Nhóm đối tượng theo một property
Get-Process | Measure-Object CPU -Sum
Tổng hợp giá trị số (tổng, trung bình)
Get-ChildItem | Select-Object -Unique
Trả về các đối tượng riêng biệt
1..5 | ForEach-Object { $_ * 2 }
Đưa một khoảng qua một phép biến đổi
Get-Process | Out-GridView
Gửi kết quả tới một lưới tương tác

File & đường dẫn

13
Get-ChildItem -Path C:\Logs
Liệt kê mục trong một thư mục (alias ls/dir)
Get-ChildItem -Recurse -Filter *.log
Liệt kê file khớp một cách đệ quy
Get-Content .\file.txt
Đọc tệp từng dòng
Get-Content .\file.txt -Tail 20
Đọc N dòng cuối của một file
Set-Content .\file.txt -Value 'Hi'
Ghi (ghi đè) văn bản ra một file
Add-Content .\file.txt -Value 'Hi'
Nối văn bản vào một file
Copy-Item a.txt b.txt
Sao chép một file hoặc thư mục
Move-Item a.txt .\dir\
Di chuyển hoặc đổi tên một mục
Remove-Item a.txt -Force
Xóa một file hoặc thư mục
New-Item -ItemType Directory -Path .\dir
Tạo một file hoặc thư mục mới
Test-Path .\file.txt
Kiểm tra một đường dẫn có tồn tại không
Get-Location
Hiển thị thư mục hiện tại (alias pwd)
Set-Location C:\Temp
Đổi thư mục hiện tại (alias cd)

Chuỗi & văn bản

12
'Hello World' -match 'World'
Kiểm tra một chuỗi với một regex
'Hello' -replace 'l', 'L'
Thay thế văn bản bằng một regex
'a,b,c' -split ','
Tách một chuỗi thành mảng bằng regex
'a-b-c'.Split('-')
Tách bằng method String của .NET
'a', 'b' -join ', '
Nối các phần tử mảng thành một chuỗi
Select-String -Path *.log -Pattern 'error'
Tìm kiểu grep trên các file
'{0} of {1}' -f 3, 10
Định dạng một chuỗi với placeholder
' hi '.Trim()
Loại khoảng trắng đầu và cuối
'Hello'.ToUpper()
Chuyển một chuỗi thành chữ hoa
'Hello'.Substring(0, 3)
Trích một chuỗi con theo chỉ số và độ dài
'Hello'.Contains('ell')
Kiểm tra một chuỗi có chứa văn bản không
'Hello'.Length
Lấy số ký tự

Vòng lặp & điều kiện

12
if ($x -gt 0) { 'pos' } elseif ($x -eq 0) { 'zero' } else { 'neg' }
Rẽ nhánh với if / elseif / else
switch ($x) { 1 { 'one' } default { 'other' } }
Khớp một giá trị với các trường hợp
foreach ($i in $arr) { $i }
Lặp qua một tập hợp
for ($i = 0; $i -lt 5; $i++) { $i }
Vòng lặp đếm với một chỉ số
while ($x -lt 10) { $x++ }
Lặp khi một điều kiện đúng
do { $x++ } while ($x -lt 10)
Lặp ít nhất một lần rồi kiểm tra
$x -eq 5; $x -ne 5
So sánh bằng và khác
$x -gt 5; $x -lt 5
So sánh lớn hơn và nhỏ hơn
$x -ge 5; $x -le 5
So sánh lớn/nhỏ hơn hoặc bằng
'abc' -like 'a*'
So sánh khớp ký tự đại diện
@(1, 2, 3) -contains 2
Kiểm tra thành viên trong mảng
break; continue
Thoát hoặc bỏ qua lần lặp hiện tại

Hàm & script

12
function Get-Sum { param($a, $b) $a + $b }
Định nghĩa một hàm có tham số
Get-Sum -a 2 -b 3
Gọi một hàm với tham số có tên
function Test { param([int]$n = 1) }
Tham số định kiểu với giá trị mặc định
param([Parameter(Mandatory)]$Name)
Yêu cầu phải cung cấp một tham số
return $value
Trả về một giá trị từ một hàm
function F { [CmdletBinding()] param() }
Tạo một hàm nâng cao (tham số chung)
Write-Verbose 'msg' -Verbose
Phát một luồng thông điệp chi tiết
Write-Output $result
Gửi một đối tượng vào pipeline
Write-Error 'failed'
Ghi vào luồng lỗi
.\script.ps1 -Arg value
Chạy một file script với tham số
. .\functions.ps1
Dot-source một script vào phiên
try { } catch { $_ } finally { }
Xử lý lỗi gây dừng

Đối tượng & property

12
Get-Process | Select-Object -ExpandProperty Name
Trả về giá trị property thô, không phải đối tượng
(Get-Process).Name
Truy cập một property trên mỗi đối tượng
Get-Process | Select-Object Name, @{ Name = 'MB'; Expression = { $_.WS / 1MB } }
Thêm một property tính toán
[PSCustomObject]@{ Name = 'Ann'; Age = 30 }
Xây một đối tượng tùy chỉnh
$obj | Add-Member -NotePropertyName Tag -NotePropertyValue 'x'
Gắn một property vào một đối tượng
$obj.PSObject.Properties.Name
Liệt kê tên property của một đối tượng
$obj | Format-Table -AutoSize
Hiển thị đối tượng dạng bảng căn chỉnh
$obj | Format-List *
Hiển thị mọi property dạng danh sách
$obj | ConvertTo-Json -Depth 5
Tuần tự hóa một đối tượng thành JSON
Get-Content data.json | ConvertFrom-Json
Phân tích JSON thành đối tượng
$obj | Export-Csv out.csv -NoTypeInformation
Xuất đối tượng ra một file CSV
Import-Csv data.csv
Đọc một file CSV thành đối tượng

Tiến trình & dịch vụ

12
Get-Process
Liệt kê tiến trình đang chạy (alias ps)
Get-Process -Name chrome
Lấy tiến trình theo tên
Stop-Process -Name notepad -Force
Kết thúc một tiến trình
Start-Process notepad.exe
Khởi chạy một tiến trình mới
Get-Service
Liệt kê dịch vụ Windows
Get-Service -Name wuauserv
Lấy một dịch vụ theo tên
Start-Service -Name wuauserv
Khởi động một dịch vụ đã dừng
Stop-Service -Name wuauserv
Dừng một dịch vụ đang chạy
Restart-Service -Name wuauserv
Khởi động lại một dịch vụ
Set-Service -Name wuauserv -StartupType Manual
Đổi chế độ khởi động của một dịch vụ
Get-EventLog -LogName System -Newest 20
Đọc các mục event-log cổ điển gần đây
Get-WinEvent -LogName Application -MaxEvents 20
Truy vấn event log hiện đại

Remoting & job

12
Enter-PSSession -ComputerName Srv01
Bắt đầu một phiên từ xa tương tác
Exit-PSSession
Rời một phiên từ xa tương tác
Invoke-Command -ComputerName Srv01 -ScriptBlock { Get-Service }
Chạy một lệnh trên host từ xa
$s = New-PSSession -ComputerName Srv01
Tạo một phiên từ xa bền bỉ
Invoke-Command -Session $s -ScriptBlock { hostname }
Tái dùng một phiên từ xa có sẵn
Remove-PSSession $s
Đóng và gỡ một phiên từ xa
Start-Job -ScriptBlock { Get-Process }
Chạy một lệnh dưới dạng job nền
Get-Job
Liệt kê các job nền và trạng thái của chúng
Receive-Job -Id 1 -Keep
Lấy đầu ra của một job
Wait-Job -Id 1
Chặn cho tới khi một job hoàn tất
Stop-Job -Id 1; Remove-Job -Id 1
Dừng và gỡ một job nền
Get-Process | Start-ThreadJob { $input }
Chạy thread job nhẹ trong tiến trình

Module & gói

12
Get-Module
Liệt kê module đang được tải
Get-Module -ListAvailable
Liệt kê mọi module đã cài
Import-Module Pester
Tải một module vào phiên
Remove-Module Pester
Gỡ một module khỏi phiên
Find-Module -Name PSReadLine
Tìm một module trong gallery
Install-Module PSReadLine -Scope CurrentUser
Cài một module từ gallery
Update-Module PSReadLine
Cập nhật một module đã cài
Uninstall-Module PSReadLine
Gỡ một module đã cài
Get-ExecutionPolicy
Hiển thị chính sách thực thi script hiện tại
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Cho phép chạy script đã ký và local
Get-PSRepository
Liệt kê các kho gói đã cấu hình
$PROFILE
Đường dẫn tới script profile người dùng hiện tại

Không có mục nào khớp với “:q”.


Cần trợ giúp?
Gặp sự cố với công cụ này? Hãy cho đội ngũ của chúng tôi biết.
Báo cáo sự cố

Thêm công cụ miễn phí này vào trang web của riêng bạn — sao chép và dán mã bên dưới.