PowerShell 入门到进阶:从基础到实战 (1)
一、认识 PowerShell
1.1 什么是 PowerShell?
PowerShell 是微软开发的跨平台命令行工具和脚本语言,结合了 shell 和编程语言的功能。它基于 .NET 框架,能够直接操作对象(而非纯文本),支持 Windows、Linux 和 macOS 系统。PowerShell 的核心优势在于:
- 对象驱动:通过对象模型直接操作系统资源(如进程、文件、服务)。
- 跨平台:支持 Windows、Linux 和 macOS。
- 自动化能力:通过脚本实现系统管理、部署和维护的自动化。
1.2 安装与启动
-
Windows:默认安装 Windows PowerShell,推荐升级到 PowerShell 7+(跨平台版本)。
-
Linux/macOS:通过包管理器(如 apt、brew)安装 PowerShell。
-
启动方式:
- Windows:开始菜单搜索
PowerShell。 - Linux/macOS:终端输入
pwsh。
- Windows:开始菜单搜索
二、PowerShell 的强大之处
2.1 对象驱动操作
传统命令行工具(如 CMD)返回的是文本,而 PowerShell 返回的是结构化对象。例如:
# 获取进程信息并筛选名称包含 "explorer" 的进程
Get-Process | Where-Object { $_.Name -like "*explorer*" }
2.2 脚本语言与自动化
PowerShell 支持函数、类、模块等高级编程特性。例如,编写一个简单的脚本:
# 创建脚本文件:hello.ps1
Write-Host "Hello, World!"
运行脚本:
.\hello.ps1
2.3 模块化与扩展性
PowerShell 的模块(Module)允许开发者封装功能。例如,安装 Azure 管理模块:
Install-Module -Name Az
Import-Module Az
三、PowerShell 快捷键
3.1 常用快捷键
| 操作 | 快捷键 |
|---|---|
| 补全命令 | Tab |
| 历史命令 | ↑ / ↓ |
| 清屏 | Clear 或 Ctrl+L |
| 注释 | # 开头 |
| 多行输入 | 按 Enter 继续输入 |
3.2 Windows PowerShell ISE 快捷键
| 操作 | 快捷键 |
|---|---|
| 运行脚本 | F5 |
| 设置断点 | F9 |
| 调试到光标 | Ctrl+F8 |
| 查看输出 | Ctrl+O |
四、PowerShell 管道与重定向
4.1 管道(Pipeline)
管道 | 将前一个命令的输出作为下一个命令的输入。例如:
# 获取所有运行中的服务并排序
Get-Service | Where-Object { $_.Status -eq "Running" } | Sort-Object Name
4.2 重定向输出
将命令结果保存到文件或控制台:
# 将进程列表保存到文件
Get-Process > processes.txt
# 同时输出到控制台和文件
Get-Process | Tee-Object -FilePath processes.txt
五、PowerShell 数学运算
5.1 基本运算
PowerShell 支持算术运算符(+, -, *, /, %):
# 计算表达式
$sum = 10 + 20
$product = 5 * 3
Write-Host "Sum: $sum, Product: $product"
5.2 变量与复杂运算
结合变量和数学函数:
# 计算圆的面积
$radius = 5
$area = [math]::PI * $radius * $radius
Write-Host "Area: $area"
六、PowerShell 执行外部命令
6.1 直接调用
可以直接调用系统命令(如 notepad、ping):
# 打开记事本
notepad
# 检查网络连通性
Test-Connection google.com
6.2 使用 Start-Process
通过 Start-Process 更灵活地启动外部程序:
# 以管理员身份运行记事本
Start-Process notepad.exe -Verb RunAs
# 启动浏览器并打开网页
Start-Process chrome.exe -ArgumentList "https://www.microsoft.com"
七、PowerShell 命令集
7.1 核心命令
| 命令 | 功能 |
|---|---|
Get-Command | 列出所有可用命令 |
Get-Help | 获取命令帮助(例如:Get-Help Get-Process) |
Get-Member | 查看对象属性和方法(例如:`Get-Date |
7.2 文件与目录操作
| 命令 | 功能 |
|---|---|
Get-ChildItem | 列出目录内容(别名:ls/dir) |
New-Item | 创建新文件或目录(例如:New-Item -ItemType File -Path test.txt) |
Copy-Item | 复制文件或目录(例如:Copy-Item file.txt newfile.txt) |
7.3 系统管理
| 命令 | 功能 |
|---|---|
Get-Service | 查看服务状态 |
Restart-Computer | 重启计算机 |
Stop-Process | 终止进程(例如:Stop-Process -Name notepad) |
7.4 示例:综合脚本
# 自动清理临时文件
$tempPath = "$env:TEMP"
Get-ChildItem -Path $tempPath -Recurse | Remove-Item -Force
Write-Host "Temporary files cleaned."
总结
PowerShell 是系统管理和自动化任务的强大工具。通过对象驱动、脚本编写、管道和模块化扩展,用户可以高效完成复杂的操作。无论是初学者还是高级用户,掌握 PowerShell 都能显著提升工作效率。