贝博恩创新科技网

Windows PowerShell教程,新手如何快速入门?

Windows PowerShell 完整教程

目录

  1. 第一部分:PowerShell 是什么?
    • 它与 CMD 的区别
    • 为什么你应该学习 PowerShell
  2. 第二部分:准备工作与环境
    • 如何打开 PowerShell
    • ISE 与 VS Code
  3. 第三部分:核心概念 - 你必须知道的基础
    • 命令 (Cmdlet)
    • 管道 (Pipeline)
    • 对象 (Object)
    • 提供程序 (Provider)
    • 别名 (Alias)
  4. 第四部分:常用命令速查
    • 文件系统操作
    • 进程管理
    • 服务管理
    • 网络信息
    • 系统信息
  5. 第五部分:脚本编程入门
    • 第一个脚本
    • 变量
    • 条件语句 (if, else)
    • 循环 (for, foreach)
    • 函数
  6. 第六部分:进阶技巧与最佳实践
    • 获取帮助 (Get-Help)
    • 使用通配符 (, )
    • 命令发现 (Get-Command)
    • 错误处理 (Try/Catch/Finally)
    • 配置文件 (profile)
  7. 第七部分:学习资源与总结
    • 官方文档
    • 推荐书籍和网站

第一部分:PowerShell 是什么?

PowerShell 是微软开发的一个功能强大的命令行外壳和脚本语言环境,它不仅仅是命令提示符 的升级版,而是一个全新的、基于 .NET 的自动化平台。

Windows PowerShell教程,新手如何快速入门?-图1
(图片来源网络,侵删)

它与 CMD 的区别

特性 Windows CMD Windows PowerShell
处理数据 纯文本 结构化对象
命令 内置命令 (如 dir, copy) Cmdlet (如 Get-ChildItem, Copy-Item)
扩展性 不易扩展 模块化,可以轻松添加新功能
管道 仅传递文本流 传递对象,可以无缝连接命令
脚本能力 基础的批处理 (.bat) 强大的脚本语言 (.ps1)
交互性 较弱 丰富的交互体验,如 Tab 自动补全

简单比喻:

  • CMD 像一把瑞士军刀,功能固定,适合简单任务。
  • PowerShell 像一个完整的工具箱,里面有各种专业工具(Cmdlet),你可以通过管道把它们组合起来,完成极其复杂的自动化任务。

为什么你应该学习 PowerShell?

  1. 系统管理的终极工具:无论是管理本地计算机还是成千上万台服务器,PowerShell 都是微软官方推荐的自动化工具。
  2. 跨平台能力:PowerShell Core 现在可以在 Windows、Linux 和 macOS 上运行,是跨平台自动化的重要选择。
  3. 无处不在:Windows 10/11、Windows Server、Azure 云服务、Microsoft 365 等都深度集成了 PowerShell。
  4. 强大的社区和生态:有海量的模块和脚本可供使用,你能想到的任务,几乎都有现成的解决方案。

第二部分:准备工作与环境

如何打开 PowerShell

最简单的方法是:

  • Win + X 键,然后选择 “Windows PowerShell” 或 “终端” (Terminal,它集成了 PowerShell)。
  • 在开始菜单搜索 “PowerShell”。

ISE 与 VS Code

  • PowerShell ISE (集成脚本环境)

    • 自带的旧版编辑器,功能包括脚本编辑、调试、命令输入。
    • 优点:集成度高,开箱即用。
    • 缺点:界面较旧,性能不如现代编辑器,微软已不再推荐。
  • Visual Studio Code (VS Code)

    Windows PowerShell教程,新手如何快速入门?-图2
    (图片来源网络,侵删)
    • 强烈推荐! 这是目前 PowerShell 脚本开发和编辑的最佳选择。
    • 安装步骤
      1. 下载并安装 Visual Studio Code
      2. 打开 VS Code,进入扩展市场。
      3. 搜索并安装 PowerShell 扩展(由 Microsoft 官方发布)。
    • 优点:语法高亮、智能感知、强大的调试功能、Git 集成等。

第三部分:核心概念 - 你必须知道的基础

理解这些概念是掌握 PowerShell 的关键。

命令

PowerShell 中的基本执行单元称为 Cmdlet(发音为 "command-let"),它是一个动词-名词形式的命令,

  • Get-Process:获取正在运行的进程。
  • Set-Location:设置当前工作目录。
  • Get-ChildItem:获取当前目录下的子项(文件和文件夹)。

命名规范

  • 动词:表示要执行的操作,微软有一套标准动词(如 Get, Set, New, Remove),这保证了命令的一致性。
  • 名词:表示操作的对象,通常是名词的单数形式(如 Process, Item, Service)。

管道

管道是 PowerShell 的精髓,它允许你将一个命令的输出作为另一个命令的输入,这就像工厂里的流水线。

Windows PowerShell教程,新手如何快速入门?-图3
(图片来源网络,侵删)

示例: 假设你想找到所有正在运行的、名称包含 "chrome" 的进程,并按内存使用量降序排列。

# CMD 的做法(非常繁琐)
tasklist | findstr "chrome" 
# PowerShell 的做法(清晰、强大)
Get-Process | Where-Object { $_.Name -like "*chrome*" } | Sort-Object -Property WS -Descending

分解

  1. Get-Process:获取所有进程对象。
  2. 管道符号,将前面的输出传递给后面的命令。
  3. Where-Object { ... }:筛选管道中的对象。$_ 代表当前正在处理的对象。
  4. *.Name -like "*chrome*":检查进程的 Name 属性是否包含 "chrome"。
  5. Sort-Object -Property WS -Descending:根据 WS (工作集内存) 属性对结果进行降序排序。

对象

这是 PowerShell 与 CMD 最根本的区别。Cmdlet 之间传递的不是文本,而是 .NET 对象。

当你运行 Get-Process 时,你得到的是一个包含多个进程对象的集合,每个对象都有属性(如 Name, Id, WS)和方法。

你可以直接访问这些属性:

# 获取第一个进程对象
$firstProcess = Get-Process | Select-Object -First 1
# 访问它的 Name 属性
$firstProcess.Name
# 输出: svchost
# 访问它的 Id 属性
$firstProcess.Id
# 输出: 4

提供程序

提供程序让你能够像访问文件系统一样访问其他数据存储,它们为不同的数据源提供了一个统一的访问接口。

默认提供程序包括:

  • FileSystem: 访问文件和文件夹 (C:\, D:\)。
  • Registry: 访问 Windows 注册表 (HKLM:\, HKCU:\)。
  • Environment: 访问环境变量 (Env:\)。
  • Alias: 访问命令别名 (Alias:\)。
  • Variable: 访问变量 (Variable:\)。

你可以使用 Get-PSProvider 命令查看所有提供程序。

别名

别名是为常用命令提供的一个简短名称,方便快速输入。

  • cdSet-Location 的别名。
  • lsGet-ChildItem 的别名。
  • dir 也是 Get-ChildItem 的别名。
  • clsClear-Host 的别名。

你可以使用 Get-Alias 查看所有别名,虽然别名方便,但在编写脚本时,建议使用完整的 Cmdlet 名称,以提高可读性和可维护性。


第四部分:常用命令速查

文件系统操作

命令 功能 示例
Get-ChildItem 列出目录内容
分享:
扫描分享到社交APP
上一篇
下一篇