PowerShell 教程

以下是针对初学者到中高级的 PowerShell 教程(基于 Windows PowerShell 5.1 和 PowerShell 7.x 通用内容),从零基础开始,逐步进阶。

1. PowerShell 是什么?

PowerShell 是微软开发的强大命令行壳和脚本语言,专为系统管理设计。

  • 基于 .NET Framework / .NET Core
  • 一切都是对象(而不是纯文本)
  • 支持管道(|)、模块、脚本、远程管理等

2. 如何打开 PowerShell

  • Windows 键 + X → Windows Terminal(推荐)或 Windows PowerShell(管理员)
  • Win + R → 输入 powershell 或 pwsh(PowerShell 7)
  • 以管理员身份运行:右键 → 以管理员身份运行

3. 基础命令(必掌握前 10 个)

命令说明示例
Get-Command查看所有可用命令Get-Command
Get-Help查看帮助(超级重要!)Get-Help Get-Process -Detailed
Get-Alias查看别名(如 dir → Get-ChildItem)Get-Alias
Clear-Host 或 cls清屏cls
Get-Location 或 pwd显示当前路径pwd
Set-Location 或 cd切换目录cd C:\Windows
Get-ChildItem 或 dir列出文件和文件夹dir -Recurse *.log
Get-Process 或 ps查看进程Get-Process
Get-Service查看服务Get-Service wuauserv
Update-Help下载最新帮助(首次建议执行)Update-Help -Force

4. 核心概念:管道(Pipeline)和对象

# 传统 cmd 是文本
dir | findstr ".txt"

# PowerShell 是对象!可以直接操作属性
Get-Process | Where-Object {$_.CPU -gt 500} | Sort-Object CPU -Descending | Select-Object -First 5

常用管道 cmdlet:

  • Where-Object → 过滤(别名 ?)
  • Select-Object → 选择属性(别名 select)
  • Sort-Object → 排序
  • ForEach-Object → 循环处理(别名 %)
  • Group-Object → 分组

5. 常用实用命令集合

# 查看 IP 配置
Get-NetIPAddress | Format-Table

# 查看磁盘使用情况
Get-Disk
Get-Partition
Get-Volume
Get-PSDrive

# 查看事件日志(最近 10 条错误)
Get-EventLog System -Newest 10 -EntryType Error

# 或 PowerShell 7 推荐写法
Get-WinEvent -LogName System -MaxEvents 10 | Where-Object LevelDisplayName -eq "Error"

# 杀进程
Stop-Process -Name notepad -Force

# 重启电脑
Restart-Computer -Force

# 查看 Windows 激活状态
Get-CimInstance SoftwareLicensingProduct | Where-Object Name -like "Windows*" | Select Name, LicenseStatus

6. 变量与数据类型

$name = "张三"
$age = 25
$isAdmin = $true
$files = Get-ChildItem C:\

# 数组
$array = 1,2,3,4,5
$array = @(1,2,3,4,5)   # 强制数组

# 哈希表(字典)
$hash = @{
    Name = "李四"
    Age = 30
    City = "北京"
}
$hash.Name   # 输出 李四

7. 条件与循环

# if
if ($age -gt 18) { Write-Output "成年" } else { Write-Output "未成年" }

# switch
switch ($env:USERDOMAIN) {
    "WORKGROUP" { "个人电脑" }
    "CORP"      { "公司电脑" }
    default     { "未知" }
}

# for
for ($i=1; $i -le 10; $i++) { Write-Output $i }

# foreach
$services = Get-Service
foreach ($s in $services) {
    if ($s.Status -eq "Stopped") { $s.Start() }
}

# PowerShell 风格 foreach
Get-Process | ForEach-Object { "$($_.Name) 使用内存 $($_.WS /1MB) MB" }

8. 函数(Functions)

function Get-DiskUsage {
    param(
        [string]$Path = "C:\"
    )
    $size = (Get-ChildItem $Path -Recurse -File -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum /1GB
    Write-Output "总大小: $($size.ToString("F2")) GB"
}

# 调用
Get-DiskUsage -Path D:\

9. 脚本基础 (.ps1 文件)

  1. 新建文件 test.ps1
# test.ps1
Write-Host "Hello PowerShell!" -ForegroundColor Green

$computers = "PC01","PC02","PC03"
foreach ($pc in $computers) {
    if (Test-Connection $pc -Count 1 -Quiet) {
        Write-Host "$pc 在线" -ForegroundColor Green
    } else {
        Write-Host "$pc 离线" -ForegroundColor Red
    }
}
  1. 执行脚本(可能需要修改执行策略)
# 查看当前执行策略
Get-ExecutionPolicy

# 设置允许运行本地脚本(推荐 RemoteSigned)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

# 执行脚本
.\test.ps1

10. 模块管理(PowerShell 7 推荐)

# 查看已安装模块
Get-Module -ListAvailable

# 安装模块(需要管理员或用户权限)
Install-Module -Name Microsoft.PowerShell.SecretManagement -Scope CurrentUser

# 常用模块推荐
Install-Module -Name PSWindowsUpdate    # Windows 更新
Install-Module -Name ImportExcel        # 操作 Excel(无需安装 Office)
Install-Module -Name Posh-SSH           # SSH 操作

11. 推荐学习资源

  • 官方文档(中文):https://learn.microsoft.com/zh-cn/powershell/
  • PowerShell 7 下载:https://github.com/PowerShell/PowerShell/releases
  • 书籍:《PowerShell 实战指南(第2版)》、《Learn PowerShell in a Month of Lunches》
  • 视频:B站搜索 “PowerShell 零基础” 或 “老夏PowerShell”

12. 每日练习建议(30天进阶计划)

第1-5天:熟悉基本命令、管道、Get-Help
第6-10天:变量、条件、循环、函数
第11-15天:写简单脚本(批量改文件名、重命名电脑、清理垃圾文件)
第16-20天:学习模块、远程管理(Invoke-Command)
第21-30天:写复杂自动化脚本(监控磁盘、自动备份、生成报告)

需要我给你一份完整的 30天学习计划 + 每日小项目 吗?或者你现在想针对某个具体场景(比如批量改文件、系统运维、Active Directory)深入学习?随时告诉我!

文章已创建 2965

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部