目录
- 核心环境与概念 (Core Environments & Concepts)
- 命令提示符 (
cmd.exe
) vs. PowerShell - PowerShell 核心哲学:一切皆对象 (Everything is an Object)
- 管道 (
|
)、重定向 (>
,>>
) - 执行策略 (Execution Policy)
- 命令提示符 (
- 文件与目录管理 (File & Directory Management)
Get-ChildItem
(ls
,dir
),Set-Location
(cd
),New-Item
,Remove-Item
,Copy-Item
,Move-Item
- 文本处理与查看 (Text Processing & Viewing)
Get-Content
(cat
,type
),Select-String
,more
- 系统信息与监控 (System Information & Monitoring)
Get-Process
(ps
,tasklist
),Stop-Process
(kill
,taskkill
),Get-Service
,systeminfo
,wmic
(旧)
- 进程与服务管理 (Process & Service Management)
Get-Process
,Stop-Process
,Start-Service
,Stop-Service
,Restart-Service
,Get-Service
- 用户与权限管理 (User & Permission Management)
whoami
,net user
,Get-LocalUser
,icacls
,takeown
- 网络工具 (Networking Tools)
ping
,ipconfig
,Get-NetIPAddress
,Test-NetConnection
,netstat
,Resolve-DnsName
- 软件包管理 (Software Package Management)
winget
(官方),Chocolatey
(社区)
- 系统管理与维护 (System Administration & Maintenance)
schtasks
,sfc
,chkdsk
,diskpart
,shutdown
- PowerShell 独有高级技巧 (Exclusive PowerShell Advanced Skills)
- 对象管道 (
|
) Where-Object
(过滤)ForEach-Object
(循环)Select-Object
(选择属性)Sort-Object
(排序)
- 对象管道 (
- 获取帮助 (Getting Help)
Get-Help
1. 核心环境与概念 (Core Environments & Concepts)
- 命令提示符 (
cmd.exe
): 传统的 Windows 命令行,基于 DOS。语法简单,处理的是纯文本,适合简单的批处理任务。正在被 PowerShell 逐步取代。 - PowerShell: 现代的、面向对象的自动化引擎和脚本语言。
- 核心哲学:一切皆对象 (Everything is an Object): 这是 PowerShell 与 Linux Shell 最根本的区别。当
Get-Process
输出进程列表时,你得到的不是文本,而是一个个包含完整属性(如 CPU、内存、句柄数)的进程对象。这使得你可以进行精确的过滤、排序和操作。 - 示例:
Get-Process | Where-Object {$_.CPU -gt 100}
(获取 CPU 时间大于 100 秒的进程)。你操作的是对象的.CPU
属性,而不是用grep
去匹配文本。
- 核心哲学:一切皆对象 (Everything is an Object): 这是 PowerShell 与 Linux Shell 最根本的区别。当
- 管道 (
|
) 和重定向 (>
,>>
): 功能与 Linux 类似,但在 PowerShell 中,管道传递的是 对象。Get-Process | Select-String "chrome"
(将进程列表转为文本,再进行文本搜索)。Get-Process | Out-File -FilePath C:\processes.txt
(重定向对象输出到文件)。
- 执行策略 (Execution Policy): PowerShell 的安全功能,防止恶意脚本运行。
Get-ExecutionPolicy
: 查看当前策略。Set-ExecutionPolicy RemoteSigned
: (管理员权限) 常用设置,允许运行本地脚本和签名的远程脚本。
2. 文件与目录管理 (File & Directory Management)
PowerShell 的命令是 动词-名词
格式,非常清晰。它也为熟悉 Linux/cmd 的用户提供了别名(Alias)。
PowerShell 命令 (别名) | cmd 等效命令 |
功能描述 | 实用示例 (PowerShell) |
---|---|---|---|
Get-ChildItem (ls , gci , dir ) |
dir |
列出目录内容 | Get-ChildItem -Path C:\Windows -Recurse -Filter "*.log" (递归查找 C:\Windows 下所有 .log 文件)。 |
Set-Location (cd , sl ) |
cd |
切换目录 | cd C:\Users\Public 。 |
New-Item (ni ) |
mkdir , type nul > |
创建新文件或目录 | New-Item -Path ".\new_dir" -ItemType Directory (创建目录)。New-Item -Path ".\new_file.txt" -ItemType File (创建文件)。 |
Remove-Item (rm , del , ri ) |
del , rmdir |
删除文件或目录 | Remove-Item -Path ".\old_file.txt" -Force (强制删除文件)。Remove-Item -Path ".\old_dir" -Recurse -Force (强制递归删除目录)。 |
Copy-Item (cp , copy , ci ) |
copy , xcopy |
复制文件或目录 | Copy-Item -Path ".\source.txt" -Destination "C:\backup\" (复制文件)。Copy-Item -Path ".\source_dir" -Destination "C:\backup\" -Recurse (复制目录)。 |
Move-Item (mv , move , mi ) |
move |
移动文件或目录 | Move-Item -Path ".\file.txt" -Destination "..\archive\" (移动文件)。 |
Rename-Item (ren , rni ) |
ren |
重命名文件或目录 | Rename-Item -Path ".\old_name.txt" -NewName "new_name.txt" 。 |
3. 文本处理与查看 (Text Processing & Viewing)
PowerShell 命令 (别名) | cmd 等效命令 |
功能描述 | 实用示例 (PowerShell) |
---|---|---|---|
Get-Content (cat , gc , type ) |
type |
获取文件内容 | Get-Content -Path "C:\Windows\System32\drivers\etc\hosts" 。 |
Get-Content -Wait |
N/A | 类似 tail -f ,实时跟踪文件 |
Get-Content -Path "C:\logs\app.log" -Wait 。 |
Select-String (sls ) |
findstr |
强大的文本/对象搜索,类似 grep |
Get-Content app.log | Select-String -Pattern "Error" -CaseSensitive (在日志中区分大小写地搜索 “Error”)。 |
more |
more |
分页显示内容 | Get-Process | more 。 |
4. 系统信息与监控 (System Information & Monitoring)
PowerShell 命令 | cmd 等效命令 |
功能描述 | 实用示例 (PowerShell) |
---|---|---|---|
Get-Process (ps , gps ) |
tasklist |
获取进程列表(对象) | Get-Process | Sort-Object -Property CPU -Descending | Select-Object -First 10 (查找 CPU 占用最高的前 10 个进程)。 |
systeminfo |
systeminfo |
显示详细的系统信息 | systeminfo |
Get-WmiObject (旧) / Get-CimInstance (新) |
wmic |
Windows 管理规范,可获取几乎所有系统信息 | Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object Caption, Version (获取操作系统名称和版本)。 |
Get-HotFix |
wmic qfe list |
查看已安装的系统补丁 | Get-HotFix | Sort-Object -Property InstalledOn (按安装时间排序补丁)。 |
5. 进程与服务管理 (Process & Service Management)
PowerShell 命令 | cmd 等效命令 |
功能描述 | 实用示例 (PowerShell) |
---|---|---|---|
Stop-Process (kill , spps ) |
taskkill |
按名称或 ID 停止进程 | Stop-Process -Name "notepad" (停止所有记事本进程)。Stop-Process -Id 1234 -Force (强制停止 PID 为 1234 的进程)。 |
Get-Service (gsv ) |
sc query |
获取服务列表(对象) | Get-Service | Where-Object {$_.Status -eq 'Running'} (获取所有正在运行的服务)。 |
Start-Service |
sc start |
启动服务 | Start-Service -Name "Spooler" (启动打印机服务)。 |
Stop-Service |
sc stop |
停止服务 | Stop-Service -Name "Spooler" -Force 。 |
Restart-Service |
sc stop/start |
重启服务 | Restart-Service -Name "wuauserv" (重启 Windows Update 服务)。 |
6. 用户与权限管理 (User & Permission Management)
PowerShell 命令 | cmd 等效命令 |
功能描述 | 实用示例 |
---|---|---|---|
whoami |
whoami |
显示当前用户信息 | whoami /all (显示更详细的信息,包括 SID)。 |
Get-LocalUser |
net user |
获取本地用户列表 | Get-LocalUser 。 net user username new_password (修改密码)。 |
icacls |
cacls (旧) |
修改文件/目录的访问控制列表 (ACLs) | icacls "C:\data" /grant "Users:(OI)(CI)M" /T (为 Users 组授予对 data 目录及其子项的修改权限)。 |
takeown |
N/A | 获取文件/目录的所有权 | takeown /F "C:\secret" /R /D Y (递归获取 secret 目录的所有权)。 |
7. 网络工具 (Networking Tools)
PowerShell 命令 | cmd 等效命令 |
功能描述 | 实用示例 |
---|---|---|---|
ping / Test-Connection |
ping |
测试网络连通性 (ICMP) | Test-Connection -ComputerName 8.8.8.8 -Count 4 。 |
Get-NetIPAddress |
ipconfig |
获取 IP 地址配置 | Get-NetIPAddress -AddressFamily IPv4 (只看 IPv4 地址)。 |
Test-NetConnection (tnc ) |
telnet (部分) |
强大的网络诊断工具,可测端口 | Test-NetConnection -ComputerName github.com -Port 443 (测试到 github.com 的 443 端口是否可达)。 |
netstat |
netstat |
显示网络连接、路由表等 | netstat -ano \| findstr "LISTENING" (查找所有监听端口及对应 PID)。 |
Resolve-DnsName |
nslookup |
DNS 查询 | Resolve-DnsName -Name google.com -Type A (查询 A 记录)。 |
8. 软件包管理 (Software Package Management)
这是 Windows 命令行现代化的重要标志。需要在管理员权限的 PowerShell 中运行。
命令 | 功能描述 | 实用示例 |
---|---|---|
winget |
Windows 官方包管理器 | winget search vscode (搜索 Visual Studio Code)。winget install Microsoft.VisualStudioCode (安装)。winget upgrade --all (升级所有已安装的包)。 |
choco |
Chocolatey,强大的社区包管理器 | choco search 7zip (搜索)。choco install 7zip -y (安装)。 |
9. 系统管理与维护 (System Administration & Maintenance)
这些多是传统的、功能强大的可执行程序。
命令 | 功能描述 | 实用示例 |
---|---|---|
schtasks |
创建和管理计划任务 | schtasks /Create /SC DAILY /TN "My Backup" /TR "C:\scripts\backup.bat" /ST 23:00 (创建每日任务)。 |
sfc |
系统文件检查器 | sfc /scannow (扫描并修复受保护的系统文件)。 |
chkdsk |
检查磁盘并修复错误 | chkdsk C: /f /r (检查并修复 C 盘的错误)。 |
diskpart |
磁盘分区管理工具 | (交互式) diskpart -> list disk -> select disk 1 -> clean 。危险! |
shutdown |
关闭或重启计算机 | shutdown /r /t 0 (立即重启)。shutdown /s /f /t 60 (60秒后强制关机)。 |
10. PowerShell 独有高级技巧 (Exclusive PowerShell Advanced Skills)
这是 PowerShell 的精髓,通过组合这些命令可以实现强大的自动化。
Where-Object
(?
) – 过滤对象:Get-Service | Where-Object {$_.Status -eq 'Stopped'}
(找到所有已停止的服务)。
ForEach-Object
(%
) – 遍历对象:Get-Service | Where-Object {_.Status -eq 'Stopped'} | ForEach-Object { Restart-Service -Name_.Name -Verbose }
(尝试重启所有已停止的服务)。
Select-Object
(select
) – 选择属性:Get-Process | Sort-Object WS -Descending | Select-Object -First 5 -Property ProcessName, ID, WS
(查找内存占用最高的前5个进程,并只显示名称、ID和工作集大小)。
Sort-Object
(sort
) – 排序对象:Get-ChildItem C:\ | Sort-Object Length -Descending
(按文件大小降序排列 C 盘根目录下的文件)。
11. 获取帮助 (Getting Help)
PowerShell 拥有非常强大的内置帮助系统。
Get-Help [命令]
: 获取命令的帮助信息。Get-Help Get-Process
-Examples
: 查看实用示例。Get-Help Get-Process -Examples
-Full
: 查看最完整的帮助信息。Get-Help Get-Process -Full
-Online
: 在浏览器中打开在线帮助文档。Get-Help Get-Process -Online
Update-Help
: (管理员权限) 更新本地的帮助文件。
最终建议 (Final Advice)
- 拥抱 PowerShell: 如果你需要在 Windows 上进行任何严肃的命令行工作,请优先学习和使用 PowerShell。
- 以管理员身份运行: 许多系统管理命令需要提升权限。右键点击 PowerShell/终端 图标,选择“以管理员身份运行”。
- 多用
Tab
键: PowerShell 的自动补全功能极其强大,可以补全命令、参数、路径、甚至参数值。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)