简述
PowerShell 是微软开发的命令行外壳与脚本语言,核心用于 Windows 系统管理、自动化任务和应用程序部署,功能远强于传统的 CMD。
核心定位:不止是 “高级 CMD”
PowerShell 基于.NET 框架(新版本基于.NET Core),本质是 “面向对象的命令行工具”,与传统 CMD 的关键区别如下:
| 对比维度 | PowerShell | 传统 CMD |
|---|---|---|
| 核心技术 | 基于.NET/.NET Core | 基于 DOS |
| 处理对象 | 面向对象(如文件、进程等实体对象) | 面向文本(仅处理字符流) |
| 脚本能力 | 支持复杂逻辑(循环、判断、函数) | 仅支持简单批处理命令 |
| 扩展生态 | 可安装数千个第三方模块(如 Azure、AWS 管理模块) | 几乎无扩展模块 |
主要用途
- 日常操作替代 GUI:通过命令快速完成文件管理、进程控制等,比如批量重命名文件、终止占用端口的进程。
- 自动化重复任务:编写脚本(.ps1 后缀)自动执行多步骤操作,比如定期备份数据、批量部署软件。
- 系统与服务器管理:远程管理 Windows Server、Active Directory、Exchange 等,无需图形界面即可完成配置。
基础语法:快速上手核心概念
PowerShell 的语法有明确规则,掌握以下 3 点即可应对大部分基础操作:
- Cmdlet 命名规则:均遵循「动词 - 名词」结构(Verb-Noun),比如
Get-ChildItem(查看目录内容,类似 CMD 的 dir)、New-Item(创建文件 / 文件夹),便于记忆和查找。 - 变量与参数:变量以
$开头,比如$filePath = "C:\test.txt";命令参数以-引导,比如Get-Content -Path $filePath(读取文件内容)。 - 管道(|):可将前一个命令的输出,直接作为后一个命令的输入,比如
Get-Process | Where-Object { $_.Name -eq "notepad" }(先获取所有进程,再筛选出记事本进程)。
模块生态:扩展功能的关键
模块是 PowerShell 的 “插件”,可快速添加特定领域的功能,核心使用流程如下:
- 查找模块:通过
Find-Module -Name *Azure*在官方仓库(PSGallery)搜索所需模块,比如 Azure 云管理、Office 365 管理模块。 - 安装模块:首次使用需先安装,命令为
Install-Module -Name 模块名(需以管理员身份运行)。 - 导入模块:安装后需导入才能使用,命令为
Import-Module -Name 模块名,部分模块会在 PowerShell 启动时自动导入。
运行安全:脚本执行的限制与解除
默认情况下,Windows 会限制 PowerShell 脚本运行,避免恶意脚本攻击,核心安全控制方式是 执行策略(ExecutionPolicy):
- 查看当前策略:执行
Get-ExecutionPolicy,默认多为Restricted(禁止运行任何脚本)。 - 修改策略:以管理员身份运行 PowerShell,执行
Set-ExecutionPolicy RemoteSigned(允许运行本地编写的脚本,远程下载的脚本需数字签名)。 - 注意事项:修改策略仅对当前用户或当前计算机生效,且需重启 PowerShell 才能生效;若无需长期使用,完成脚本运行后可改回
Restricted提升安全性。
版本差异:PowerShell 5.1 vs 7+
目前主流版本分为 Windows 自带的 5.1 和 跨平台的 7+(PowerShell 7.0 及以上),核心区别如下:
| 对比维度 | PowerShell 5.1 | PowerShell 7+ |
|---|---|---|
| 系统兼容性 | 仅 Windows | 支持 Windows、macOS、Linux |
| 核心依赖 | .NET Framework | .NET 5+(更轻量、性能更强) |
| 新功能支持 | 无后续重大更新 | 支持管道并行、新语法(如??空合并运算符) |
| 安装方式 | Windows 默认自带 | 需手动从官网下载安装 |

6421

被折叠的 条评论
为什么被折叠?



