一、PowerShell 基础认知与版本管理
1.1 PowerShell 与 CMD 的核心区别
PowerShell 是微软推出的现代化跨平台脚本语言+命令行工具,基于.NET/.NET Core构建;CMD 是传统DOS风格命令行工具,功能局限于基础系统操作。两者核心差异如下:
| 特性 | CMD | PowerShell |
|---|---|---|
| 定位 | DOS 命令行工具 | 脚本语言+命令行环境(跨平台) |
| 语法 | 简单DOS命令(dir/cd等) | 动词-名词 Cmdlet + 编程语法 |
| 输出 | 纯文本 | 对象(可直接操作属性) |
| 扩展性 | 几乎无 | 支持.NET API/第三方库/跨平台 |
代码示例:CMD 与 PowerShell 对比
:: CMD 查看目录(纯文本输出)
dir
# PowerShell 查看目录(对象输出,可筛选属性)
Get-ChildItem | Select-Object Name, Length, LastWriteTime
# 解释:Get-ChildItem 替代 dir,通过管道筛选显示文件名、大小、修改时间
1.2 查看 PowerShell 版本
通过$PSVersionTable内置变量可获取详细版本信息,这是判断 PowerShell 版本的核心方法。
代码示例:查看版本信息
# 查看完整版本信息
$PSVersionTable.PSVersion
# 输出示例:
# Major Minor Build Revision
# ----- ----- ----- --------
# 7 4 0 -1
# 仅查看主版本号(快速判断5.x或7.x)
$PSVersionTable.PSVersion.Major
1.3 升级 PowerShell 版本
- PowerShell 5.1:Win10/11预装,Win7需安装WMF 5.1;
- PowerShell 7.x:跨平台版本,可通过官网/MSI/winget安装。
代码示例:通过 winget 安装 PowerShell 7
# 以管理员身份运行,通过winget安装最新版PowerShell 7
winget install --id Microsoft.PowerShell
# 升级已安装的PowerShell 7
winget upgrade --id Microsoft.PowerShell
PowerShell 7.5.3
A new PowerShell stable release is available: v7.5.4
Upgrade now, or check out the release page at:
https://aka.ms/PowerShell-Release?tag=v7.5.4
PS H:\PHP\0554H> $PSVersionTable.PSVersion
Major Minor Patch PreReleaseLabel BuildLabel
----- ----- ----- --------------- ----------
7 5 3
PS H:\PHP\0554H> winget upgrade --id Microsoft.PowerShell
“msstore”源要求在使用前查看以下协议。
Terms of Transaction: https://aka.ms/microsoft-store-terms-of-transaction
源要求将当前计算机的 2 个字母的地理区域发送到后端服务才能正常工作,(例如"US")。
是否同意所有源协议条款?
[Y] 是 [N] 否: Y
已找到 PowerShell [Microsoft.PowerShell] 版本 7.5.4.0
此应用程序由其所有者授权给你。
Microsoft 对第三方程序包概不负责,也不向第三方程序包授予任何许可证。
正在下载 https://github.com/PowerShell/PowerShell/releases/download/v7.5.4/PowerShell-7.5.4-win-x64.msi
██████████████████████████████ 107 MB / 107 MB
已成功验证安装程序哈希
正在启动程序包安装...
已放弃安装
PS H:\PHP\0554H>
二、PowerShell 系统集成配置
2.1 资源管理器右键菜单添加 PowerShell 选项
通过修改注册表,可在文件夹右键菜单添加“在此处打开PowerShell”选项,分为文件夹图标右键和空白处右键两种场景。
代码示例:注册表脚本(PowerShell 7预览版)
Windows Registry Editor Version 5.00
; 文件夹空白处右键添加PowerShell 7预览版
[HKEY_CLASSES_ROOT\Directory\Background\shell\OpenPowerShell7PreviewHere]
@="在此处打开PowerShell 7预览版" ; 右键菜单显示名称
[HKEY_CLASSES_ROOT\Directory\Background\shell\OpenPowerShell7PreviewHere\command]
@="\"C:\\Program Files\\PowerShell\\7-preview\\pwsh.exe\" -NoExit -Command Set-Location -LiteralPath \"%V\""
; 解释:-NoExit 保持窗口打开,Set-Location定位到当前路径,%V表示右键点击的路径
; 文件夹图标右键添加PowerShell 7预览版
[HKEY_CLASSES_ROOT\Directory\shell\OpenPowerShell7PreviewHere]
@="在此处打开PowerShell 7预览版"
[HKEY_CLASSES_ROOT\Directory\shell\OpenPowerShell7PreviewHere\command]
@="\"C:\\Program Files\\PowerShell\\7-preview\\pwsh.exe\" -NoExit -Command Set-Location -LiteralPath \"%L\""
2.2 设置 Windows 终端默认打开 PowerShell 7
通过终端设置将 PowerShell 7设为默认配置文件,步骤如下:
- 打开 Windows 终端(
Win + X→ 终端); - 按
Ctrl + ,打开设置,在“启动”→“默认配置文件”选择 PowerShell 7; - 可选:将 Windows 终端设为系统默认终端。
代码示例:终端设置文件(settings.json 片段)
{
"defaultProfile": "{574e775e-4f2a-5b96-ac1e-a2962a402336}", // PowerShell 7配置文件ID
"profiles": {
"list": [
{
"commandline": "C:\\Program Files\\PowerShell\\7\\pwsh.exe",
"guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
"name": "PowerShell 7",
"startingDirectory": "%USERPROFILE%"
}
]
}
}
三、PowerShell 核心语法与实战
3.1 基础 Cmdlet 命令
PowerShell 使用“动词-名词”命名规范的 Cmdlet,常用命令如下:
代码示例:文件与系统管理 Cmdlet
# 1. 文件操作
Get-ChildItem -Path "C:\" -Filter "*.txt" # 查找C盘所有txt文件
New-Item -Path "D:\test" -ItemType Directory # 创建test文件夹
Copy-Item -Path "D:\test.txt" -Destination "E:\" # 复制文件
# 2. 系统进程管理
Get-Process -Name "chrome" # 查看Chrome进程
Stop-Process -Name "notepad" -Force # 强制关闭记事本进程
# 3. 服务管理
Get-Service -Name "wuauserv" # 查看Windows更新服务状态
Start-Service -Name "bits" # 启动BITS服务
3.2 管道与对象操作
PowerShell 命令输出为对象,可通过管道(|)传递结果并二次处理,这是其核心优势之一。
代码示例:管道与对象筛选
# 筛选大小超过100MB的文件
Get-ChildItem -Path "D:\" -Recurse |
Where-Object { $_.Length -gt 100MB } | # 过滤条件:文件大小>100MB
Select-Object Name, Length, FullName | # 选择要显示的属性
Sort-Object -Property Length -Descending # 按大小降序排列
# 解释:Where-Object 用于条件筛选,Select-Object 选择属性,Sort-Object 排序
3.3 脚本编程基础
PowerShell 支持变量、循环、条件判断等编程特性,可编写复杂自动化脚本。
代码示例:批量文件重命名脚本
# 定义变量:目标文件夹路径
$targetPath = "D:\photos"
# 获取所有jpg文件并循环重命名
$files = Get-ChildItem -Path $targetPath -Filter "*.jpg"
$count = 1
foreach ($file in $files) {
# 构造新文件名:photo_序号.jpg
$newName = "photo_$count.jpg"
$newPath = Join-Path -Path $targetPath -ChildPath $newName
# 重命名文件
Rename-Item -Path $file.FullName -Destination $newPath
$count++ # 序号递增
}
Write-Host "批量重命名完成,共处理 $($count-1) 个文件"
四、PowerShell 高级应用
4.1 调用 .NET API
PowerShell 可直接调用 .NET 类库,扩展功能边界。
代码示例:使用 .NET 类发送HTTP请求
# 调用System.Net.WebClient类下载文件
$webClient = New-Object System.Net.WebClient
$url = "https://example.com/file.zip"
$savePath = "D:\downloads\file.zip"
$webClient.DownloadFile($url, $savePath)
$webClient.Dispose() # 释放资源
Write-Host "文件下载完成:$savePath"
4.2 远程管理
PowerShell 支持远程执行命令,实现多机器管理。
代码示例:远程执行命令
# 启用远程管理(需管理员权限)
Enable-PSRemoting -Force
# 远程连接到目标计算机并执行命令
Invoke-Command -ComputerName "RemotePC" -ScriptBlock {
Get-Service -Name "winrm" # 查看远程计算机的WinRM服务状态
} -Credential (Get-Credential) # 输入远程计算机的凭据
总结
本文涵盖 PowerShell 版本管理、系统集成配置、核心语法与实战应用,从基础到进阶全面讲解,适合初学者快速掌握 PowerShell 并应用于日常系统管理与自动化任务。PowerShell 作为现代化命令行工具,兼容 CMD 且功能更强大,是 Windows 平台自动化运维的首选工具。



李枭龙11 个月前
AI生成文章:请以上所有知识进行深入分析,确定主要知识点,为每个知识点撰写详细说明并附上具有代表性且带有清晰注释的代码示例,接着根据内容拟定一个准确反映文档核心的标题,最后严格按照 Markdown 格式进行排版,确保文档规范美观,以满足初学者学习使用的需求。
李枭龙1 年前
X Lucas