PowerShell 入门到精通:强大脚本自动化完全指南
开始学习 PowerShell 课程。首先了解:
什么是 PowerShell?
Windows PowerShell 是面向对象的自动化引擎与脚本语言。主要面向 IT 专业人员与系统管理员,用于控制和自动化 Windows OS 及其他应用的管理。它在 Windows 命令提示符和 Windows Script Host 环境中扩展了你已有的知识与脚本能力。
它融合了脚本灵活性、命令行速度与 GUI 管理工具威力。帮助系统管理员消除未来的手工劳动,高效解决问题。我们将过一遍学习 PowerShell 必知的所有重要方面。
本 PowerShell 入门教程涵盖基础:
- 什么是 PowerShell?
- 为什么使用 PowerShell?
- PowerShell 历史
- PowerShell 特性
- 如何启动 PowerShell
- PowerShell Cmdlet
- Cmdlet 与 Command 对比
- PowerShell 数据类型
- 特殊变量
- PowerShell 脚本
- 第一个 PowerShell 脚本
- 什么是 PowerShell ISE?
- PowerShell 核心概念
- PowerShell 与命令提示符对比
- PowerShell 应用场景
这是 PowerShell 脚本基础的完整指南……开始吧!
为什么使用 PowerShell?
重要理由:
- 为操作系统提供深度集成的命令行体验
- 完全访问 .NET 框架所有类型
- 受系统管理员信赖
- 简单操作服务器与工作站组件
- 面向系统管理员设计更易用的语法
- 比运行 VBScript 或其他脚本语言更安全
PowerShell 历史
PowerShell 1.0 于 2006 年发布。至今已达 7.2 版。随年份与版本迭代,能力与宿主环境显著增强。
版本演进:
- 1.0 支持 Windows Server 2003 本地管理
- 2.0 集成于 Windows 7 与 Server 2008 R2,增加远程、事务、后台作业、事件、调试等
- 3.0 作为 Windows 管理框架内部组件随 Windows 8 与 Server 2012 发布,新增计划作业、会话连接、模块自动加载等
- 4.0 随 Windows 8.1 与 Server 2012 R2 发布,增加期望状态配置、增强调试、网络诊断
- 5.0 作为管理框架 5 内部发布,提供远程调试、类定义、.NET 枚举等
- 7.2 基于 .NET 6.0 构建,新增运算符、简化动态错误视图、自动版本更新通知等
接下来学习 PowerShell 特性。
PowerShell 特性
- PowerShell Remoting:允许在远程机器上调用脚本与 cmdlet
- 后台作业:异步调用脚本或管道,可在本地或多台远程机器运行
- 事务:启用 cmdlet 让开发者执行…
- 事件:监听、转发、响应管理与系统事件
- 网络文件传输:基于 BITS 技术提供优先级、异步、限流的跨机器文件传输原生支持
如何启动 PowerShell
所有新版 Windows 预装 PowerShell。启动步骤:
步骤 1) Windows 搜索 PowerShell,点击打开

步骤 2) PowerShell 窗口打开

PowerShell Cmdlet
Cmdlet(Command-let)是 Windows PowerShell 环境中的轻量级命令。PowerShell 在命令提示符中调用这些 cmdlet。可通过 PowerShell API 创建和调用 cmdlet。
Cmdlet 与 Command 对比
Cmdlet 与其他命令行环境的命令区别:
- Cmdlet 是 .NET Framework 类对象,不可单独执行
- Cmdlet 仅需十几行代码即可构建
- 解析、输出格式化、错误呈现不由 cmdlet 处理
- Cmdlet 面向对象工作,文本流与对象不能作为管道输出
- Cmdlet 基于记录处理,单次处理单个对象
PowerShell 核心功能源自 Cmdlet,始终采用“动词-名词”格式且不使用复数。Cmdlet 返回对象而非文本。Cmdlet 是存储在 .ps1 文本文件中的多行命令系列。
Cmdlet 由动词与名词经连字符组成。学习常用动词:
- Get — 获取
- Start — 启动
- Out — 输出
- Stop — 停止运行中的操作
- Set — 设置/定义
- New — 创建
PowerShell 常用命令
Get-Help: 获取命令与主题帮助
示例:显示 Format-Table 帮助
Get-Help Format-Table

Get-Command: 获取可调用项信息
脚本示例:列出机器安装的所有 cmdlet 与函数
Get-Command

Get-Service: 查找含“service”的 cmdlet
示例:获取以“vm”开头的服务
Get-Service "vm*"

Get-Member: 显示对象可用成员
示例:获取 vm 进程成员
Get-Service "vm*" | Get-Member

其他命令:
- Get-Module 显示命令包
- Get-Content 读取文件内容并处理
- Get- 查找所有以 get- 开头的 cmdlet
示例:创建文件夹
New-Item -Path 'X:\Guru99' -ItemType Directory
输出

PowerShell 数据类型
PowerShell 数据类型
特殊变量
| 特殊变量 | 说明 |
|---|---|
| $Error | 错误对象数组,显示最近错误 |
| $Host | 显示当前宿主应用名称 |
| $Profile | 存储默认 Shell 用户配置文件完整路径 |
| $PID | 存储进程标识符 |
| $PSUICulture | 当前 UI 区域文化名称 |
| $NULL | 空或 NULL 值 |
| $False | FALSE 值 |
| $True | TRUE 值 |
PowerShell 脚本
脚本存储为 .ps1 文件。默认双击无法运行,保护系统免受意外损害。执行脚本:
步骤 1:右键点击选择“Run with PowerShell”

执行策略限制脚本运行。运行 Get-ExecutionPolicy 查看策略,可能输出:
- Restricted — 禁止运行脚本(默认)
- AllSigned — 仅运行受信开发者签名脚本,执行前确认
- RemoteSigned — 运行本地或受信签名脚本
- Unrestricted — 运行任意脚本
更改执行策略步骤:
步骤 1) 以管理员身份打开 PowerShell(右键“Run as Administrator”)

步骤 2) 执行命令:
- Get-ExecutionPolicy
- Set-ExecutionPolicy Unrestricted
- 输入 Y 确认
- Get-ExecutionPolicy

第一个 PowerShell 脚本
记事本写入:
Write-Host "Hello, Guru99!"
保存为 FirstScript.ps1

PowerShell 中调用:
& "X:\FirstScript.ps1"

什么是 PowerShell ISE?
Windows PowerShell 集成脚本环境 (ISE) 是 PowerShell 默认编辑器。可在基于窗口的 GUI 环境中运行命令、编写测试、调试脚本。支持多行编辑、语法着色、Tab 补全、选择性执行等。
ISE 也支持控制台面板运行命令,并提供可插入工具的辅助面板,可同时查看脚本源码与其他工具。
可同时打开多个脚本窗口,调试使用其他脚本/模块定义函数的脚本时特别有用。
PowerShell ISE
同一脚本可在 ISE 中创建:
- 粘贴代码到编辑器
- 保存脚本
- 按 F5 运行
- 在控制台观察输出

示例 2:获取本机空闲虚拟内存
Get-WmiObject -Class Win32_OperatingSystem –ComputerName localhost | Select-Object -Property CSName,FreeVirtualMemory

PowerShell 核心概念
Cmdlets 由 VB/C# 等 .NET 语言编写的内置命令。允许开发者通过加载/编写 PowerShell snap-in 扩展 cmdlet 集合。
Functions 用 PowerShell 语言编写的命令,无需 Visual Studio 等 IDE 即可开发。
Scripts 磁盘上 .ps1 扩展名的文本文件。
Applications 现有 Windows 程序。
WhatIf 告知 cmdlet 不执行仅模拟结果。
Confirm 执行前提示确认。
Verbose 提供更高详细级别。
Debug 指示 cmdlet 提供调试信息。
ErrorAction 错误时执行特定动作:continue、stop、silently-continue、inquire。
ErrorVariable 指定保存错误信息的变量。
OutVariable 指定保存输出信息的变量。
OutBuffer 指定调用下一个管道 cmdlet 前暂存对象数量。
PowerShell 脚本优势
- 脚本功能强大,少量代码完成大量工作
- 变量声明形式
$<variable> - 变量可保存命令输出、对象、值
- 变量“类型”无需显式指定
PowerShell 与命令提示符对比
| PowerShell | Command Prompt |
|---|---|
| 深度集成 Windows OS,提供交互式命令行与脚本语言 | Microsoft 提供的默认命令行界面,简单的 win32 应用,与 Windows 系统中任何 win32 对象交互 |
| 使用 cmdlet,可在运行时环境或自动化脚本中调用 | 无此类特性 |
| 将输出视为对象,可通过管道传递给其他 cmdlet | 输出仅为文本流,非对象集合 |
| 功能、能力、内部机制极其先进 | 功能基础 |
PowerShell 应用场景
如今 PowerShell 成为大型企业网络 IT 管理员理想选择,简化管理操作与工作量。例如:管理 400+ 服务器的大型网络,需部署依赖特定服务的新安全方案。手工逐台登录检查耗时且易错。用 PowerShell 单脚本几分钟搞定,自动收集所有服务器服务运行信息。
总结
- Windows PowerShell 是面向对象自动化引擎与脚本语言
- 为操作系统提供深度集成命令行体验
- 1.0 版于 2006 年发布
- 支持远程机器调用脚本与 cmdlet
- 所有新版 Windows 预装
- Cmdlet 是 Windows PowerShell 环境中的轻量命令
- Get、Start、Out、Stop、Set、New 为重要命令动词
- Boolean、Byte、Char、Decimal、Long 等为重要数据类型
- $Error、$Host、$Profile、$PID、$PSUICulture、$NULL 等为特殊变量
- PowerShell ISE 是 PowerShell 默认编辑器
- PowerShell 深度集成 Windows OS,命令提示符是 Microsoft 提供的默认命令行界面
- PowerShell 成为大型企业网络 IT 管理员理想选择,简化管理操作与工作量
C语言
- 树莓派 3 Model B+ 安装 Windows 10 IoT Core 完整步骤指南
- 树莓派避障机器人搭建指南:新手入门教程
- 金属制造入门:新手清晰指南
- 新手入门CNC雕刻机:以工业级精度轻松开启加工之旅
- CNC铣削入门四大黄金法则:材料、冷却、刀具、工装
- 在 Windows 上安装 Visual Studio 2019 Community 版进行 C# 开发
- C# 流程控制:IF、SWITCH、FOR、WHILE 实战详解
- C# Windows Forms 开发实战教程:从入门到进阶控件应用
- 2021 年 Windows/macOS/Linux 十大 C# IDE 评测
- Windows/macOS/Linux 安装 GCC 编译器全平台图文教程
- 2024 年最佳 C 语言 IDE 全平台推荐:Windows/macOS/Linux 深度评测与选型指南
- C 语言入门到精通 PDF 教程:零基础自学全攻略(含 160+ 页实战案例)