CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
PowerShell 入门/课时/管道与对象
RawBlame
课时目录12 节

PowerShell 入门

  1. 01PowerShell 是什么
  2. 02Cmdlet 基础
  3. 03管道与对象
  4. 04变量与类型
  5. 05脚本与函数
  6. 06文件与路径
  7. 07远程与会话
  8. 08PowerShell vs Bash
  9. 09Windows 部署 CodeRoadMap
  10. 10GitHub Actions Windows
  11. 11Windows 容器简介
  12. 12综合练习

管道与对象

对象管道 vs 文本管道、Where-Object。

30 分钟

管道与对象

PowerShell 的 管道 传递的是 .NET 对象,不是 Bash 的纯文本行。每个 cmdlet 输出结构化对象,下游 cmdlet 直接读属性——这是与 linux-shell 最大的差异。

学习目标

  • 理解对象管道 vs 文本管道
  • 熟练使用 Where-Object、Select-Object、ForEach-Object
  • 能用管道过滤进程、端口与 API 响应

核心内容

对象 vs 文本

# Bash:文本行,需 awk/grep 切字段
# ps aux | grep java

# PowerShell:对象,直接访问属性
Get-Process | Where-Object { $_.ProcessName -eq "java" } |
  Select-Object Id, ProcessName, CPU

管道中 $ 代表当前管道对象($_ 或 $PSItem)。

三大过滤 cmdlet

# Where-Object:过滤(类似 grep,但针对属性)
Get-NetTCPConnection | Where-Object { $_.LocalPort -in 8080, 3000 }

# Select-Object:选列、计算属性
Get-ChildItem deploy\scripts\*.ps1 |
  Select-Object Name, Length, LastWriteTime

# ForEach-Object:逐条处理
1..3 | ForEach-Object { "step $_" }

简写:? = Where-Object,% = ForEach-Object,select = Select-Object。

实战:检查 CodeRoadMap 端口

8080, 3000 | ForEach-Object {
  $port = $_
  $conn = Get-NetTCPConnection -LocalPort $port -State Listen -ErrorAction SilentlyContinue
  [PSCustomObject]@{
    Port   = $port
    Listen = [bool]$conn
    PID    = ($conn | Select-Object -First 1).OwningProcess
  }
}

对应 Linux:ss -tlnp | grep -E '8080|3000'。

排序与导出

Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
Invoke-RestMethod http://127.0.0.1:8080/api/tracks |
  Select-Object -ExpandProperty slug

-ExpandProperty 把嵌套属性展平为字符串列表,便于比对。

练习

  • 列出 CPU 占用前 5 的进程
  • 用管道统计 content\课程 下 .md 文件数量
  • 检查 8080 与 3000 是否在监听,输出表格

小结

下一课变量与类型。

PowerShell 管道传对象:Where 过滤、Select 投影、ForEach 处理。
加载本节练习…
← 上一课Cmdlet 基础下一课 →变量与类型