当前位置: 首页 > news >正文

PowerShell 入门文档

cmd 是在“处理字符串”,而 PowerShell 是在**“操作对象”**。

cmd 的世界里,dir 命令输出的是一长串文本
PowerShell 的世界里,Get-ChildItem (即 dir) 命令输出的是一个**[System.IO.FileInfo] 对象的数组**。

这就像你从 PHP 的 echo "..." 时代,直接进化到了使用 Symfony 或 Laravel 框架。你不再是“拼字符串”,你是在调用“对象的方法”。

这份入门文档是为你(开发者)量身定做的。


🚀 PowerShell 开发者入门文档 (PHP 开发者版)

阶段一:环境与思维准备 (The “IDE” & Mindset)

1. 在哪里运行?(你的新 “Terminal”)

  • 不要用那个蓝底白字的 powershell.exe
  • 请使用:Windows Terminal
  • Windows 10/11 请从 Microsoft Store 搜索安装 Windows Terminal。它现代、支持多标签、美观,并且默认的配置文件就是 PowerShell (版本 7+)。

2. 在哪里编写?(你的新 “PHPStorm”)

  • VS Code (Visual Studio Code)
  • 必装插件: 在 VS Code 插件市场搜索并安装 PowerShell (来自 Microsoft)。
  • 这会给你带来:语法高亮、F5 键调试、智能提示 (IntelliSense),以及一个内置的 PowerShell 控制台。

3. 你必须知道的第一个“坑”:执行策略 (Execution Policy)

  • PowerShell 出于安全考虑,默认禁止运行任何本地脚本。
  • 症状: 你写了一个 test.ps1 脚本,右键运行,它闪一下就消失了,或者报错。
  • 解决方案 (一次性):
    1. 管理员身份打开 Windows Terminal
    2. 运行以下命令:
      Set-ExecutionPolicy RemoteSigned
      
    3. 它会询问你,输入 Y (或 A) 回车。
  • 解释: 这条命令允许你“运行本地编写的脚本”,但“从网上下载的脚本”必须有签名才能运行。这对开发来说是安全且必要的。

阶段二:基础语法 (The “PHP” Parallels)

1. “函数”:Cmdlet (Command-let)

PowerShell 的命令不叫 “command”,而叫 “Cmdlet” (读作 command-let)。
它的哲学是**“动词-名词” (Verb-Noun)** 结构,非常易读。

你在 cmd / bash 里想…PowerShell 的“函数”是…PHP/编程 概念
dirlsGet-ChildItem获取"子项目"
copyCopy-Item复制"项目"
delrmRemove-Item移除"项目"
echoWrite-HostWrite-Output打印"输出"
catGet-Content获取"内容"
findSelect-String选择"字符串"

提示: PowerShell 内置了 dir, ls, copy, cat 等别名 (Alias) 来兼容你的旧习惯。但作为开发者,建议你从一开始就学习“动词-名词”的真名。

2. “变量”:$

好消息:和 PHP 一模一样!

# 定义变量 (不需要分号结尾)
$name = "Gemini"
$age = 10
$services = Get-Service# 打印变量 (字符串插值,和PHP的双引号一样)
Write-Host "Hello, $name"
Write-Host "Service count: $($services.Length)"  # 复杂变量用 $() 包裹
3. “万能手册”:Get-Help

这是你学习 PowerShell 最重要的命令,没有之一。它就像 PHP 的 php.net 文档。

# 获取 Get-Process 命令的帮助 (像 man process)
Get-Help Get-Process# (推荐) 获取完整的、带所有参数和示例的帮助
Get-Help Get-Process -Full# (超有用) 获取所有“网络”相关的命令
Get-Command -Noun *Net*

阶段三:核心灵魂 —— 管道 | 与“对象”

这是你(PHP开发者)和 cmd 用户的核心区别

  • cmd / bash 中,| 管道传递的是字符串 (String)
  • PowerShell 中,| 管道传递的是对象 (.NET Object)
示例:获取占用 CPU 最高的 5 个进程

第一步:获取“所有”进程(对象数组)

Get-Process

(你会看到一个表格,它是一个 [System.Diagnostics.Process] 对象数组)

第二步:对“对象”进行筛选 (PHP的 array_filter)
我们使用 Where-Object (别名 where)。$_ 变量就是“当前循环的对象”(类似 PHP 的 $_foreach 里的 $item)。

# 筛选出所有 CPU 时间大于 0 的进程
Get-Process | Where-Object { $_.CPU -gt 0 }

第三步:对“对象”进行排序 (PHP的 usort)
我们使用 Sort-Object (别名 sort)。

# 按 CPU 属性 (-Property) 降序 (-Descending) 排序
Get-Process | Where-Object { $_.CPU -gt 0 } | Sort-Object -Property CPU -Descending

第四步:只选择我想要的“属性” (PHP的 array_map)
我们使用 Select-Object (别名 select)。

# 只选择前 5 个 (-First 5),并且只显示 Name, CPU, ID 这三个属性
Get-Process | Where-Object { $_.CPU -gt 0 } | Sort-Object -Property CPU -Descending | Select-Object -First 5 -Property Name, CPU, ID

看到了吗? 你全程没有“解析”任何字符串。你是在调用 $process->CPU$process->Name 这样的对象属性


阶段四:编写脚本 (.ps1 文件)

当你把这些命令存到一个 .ps1 文件里,你就在写脚本了。

1. 运算符 (⚠️ 巨坑警告)

PowerShell 不使用 ==, !=, >, <
因为它把 <> 用作“重定向”了(历史包袱)。

它使用**“比较运算符”**:

  • -eq (Equals)
  • -ne (Not Equals)
  • -gt (Greater Than)
  • -ge (Greater than or Equals)
  • -lt (Less Than)
  • -le (Less than or Equals)
  • -like (模糊匹配, 类似 SQL LIKE* 是通配符)
  • -match (正则匹配)
2. if / else (和 PHP 一样)

语法和 PHP / C# 完全一致。

$ram = Get-WmiObject -Class Win32_ComputerSystem | Select-Object -ExpandProperty TotalPhysicalMemory
$ram_gb = [math]::Round($ram / 1GB)if ($ram_gb -lt 16) {Write-Host "警告:内存不足 16GB,当前为 $ram_gb GB"
} else {Write-Host "内存充足:$ram_gb GB"
}
3. foreach 循环 (和 PHP 一样)
$services = Get-Service | Where-Object { $_.Status -eq "Running" }# $s 是 $services 数组中的每一个“服务对象”
foreach ($s in $services) {# 访问对象的属性Write-Host "服务 $($s.Name) 正在运行..."
}

阶段五:“真·对象”思维 (The “Aha!” Moment)

  • cmd 的思维: ping 127.0.0.1,然后得到一堆字符串,你必须用正则去匹配 (0% 丢失)
  • PowerShell 的思维:
# Test-NetConnection 会返回一个“Ping 结果对象”
$result = Test-NetConnection -ComputerName 127.0.0.1 -WarningAction SilentlyContinueif ($result.PingSucceeded) {Write-Host "Ping 成功! 延迟: $($result.PingReplyDetails.RoundtripTime) ms"
} else {Write-Host "Ping 失败!"
}

你不再“猜”字符串,你是在访问 if ($result->PingSucceeded) 这样的布尔值 (boolean)


总结

你不需要从头学。你只需要:

  1. 切换到 Windows TerminalVS Code
  2. 运行 Set-ExecutionPolicy RemoteSigned
  3. 记住 Get-Help 是你的圣经。
  4. 记住 Verb-Noun 的命令结构。
  5. 记住 | 传递的是对象,用 Where, Sort, Select 来操作它们。
  6. 记住运算符是 -eq, -gt

你已经掌握了 PHP,你学 PowerShell 只需要一周时间。祝你好运!

http://www.dtcms.com/a/548643.html

相关文章:

  • Notepad++官方下载渠道
  • 【问题】Android Studio专用C盘空间过大问题:迁移相关程序文件
  • 北数云|利用Limix模型对tabular-benchmark数据集实现分类和回归任务
  • 免费建站优化外包公司能不能去
  • Fluid 正式入驻青云 KubeSphere Marketplace,共建云原生数据加速新生态
  • Chapter14—中介者模式
  • Python 教程:将 PPT(X) 转换为 PDF
  • [MySQL]字符串函数
  • h5游戏免费下载:暴打小苹果
  • Java 网络编程:TCP 与 UDP 的「通信江湖」(基于TCP回显服务器)
  • VMD-Transformer-LSTM组合模型锂电池剩余寿命预测(NASA电池数据集容量特征提取+RUL电池剩余寿命预测)MATLAB代码
  • 告别手搓PPT:实测四款免费AI生成工具
  • 如何在 iPhone 上录制屏幕 - 三大方法
  • 界面简洁,上手快!适合新手的免费PPT生成软件推荐
  • cdr做网站新乐做网站优化
  • 长沙网站建设联系电话asp网站免费模板下载
  • Gorm散知识点小结--标签名
  • python语言基础-6 多任务-6.0 基本概念
  • 四川省工程建设信息官方网站郴州做网站ku0735
  • Kubernetes 资源管理总结
  • 【源码+数据集+训练教程】基于YOLOv8+Flask+Layui的智能垃圾分类检测系统
  • X_T 转换为 3DXML 的技术指南及迪威模型网在线转换推荐
  • NumPy 2.x 完全指南【四十二】线性代数之向量运算
  • 制作网站要求com网站注册域名
  • 网站建设教程搭建芽嘱湖南岚鸿信赖营销单页网站模板
  • 【RDMA】mlx5dev mlx5dv_devx 接口
  • 【墨铺网教程】一台电脑加入多个局域网,让电脑做上传下载主力又当存储盘
  • 变身智能车载台,AORO P9000U三防平板赋能工业数字化升级
  • 安全登录多人共用的机密电脑:基于动态凭证与会话隔离的解决方案
  • 全球首款卷轴屏电脑发布!ToDesk+扩展屏成平替方案