powershell教程菜鸟教程
打开 Windows 电脑,教程教程按下 Win 键,菜鸟输入 "PowerShell",教程教程右键选择“以管理员身份运行”。菜鸟一个蓝色背景的教程教程命令行窗口弹出来,光标闪烁,菜鸟等着你敲字。教程教程这就是菜鸟 PowerShell。很多人第一次见它,教程教程觉得跟 CMD 长得差不多,菜鸟直接关掉。教程教程可惜了。菜鸟
CMD 是教程教程 DOS 时代留下来的老工具,能干的菜鸟活有限。PowerShell 不一样,教程教程它背后是 .NET 框架,命令叫 cmdlet(读作 command-let),格式统一成“动词-名词”的结构。比如 Get-Process 查看进程,Stop-Service 停止服务,Set-Location 切换目录。看一眼名字就知道这命令干什么的,不用死记。
先搞懂几个基本操作
查看当前目录下有什么文件:
Get-ChildItem 这等价于 CMD 里的 dir,也等价于 Linux 的 ls。想只看 .txt 文件?加个过滤:
Get-ChildItem -Filter *.txt 切换目录用 Set-Location,但更常用的别名是 cd:
cd C:\Users\你的用户名\Desktop 创建文件夹:
New-Item -ItemType Directory -Name "测试文件夹" 删除文件:
Remove-Item 文件名.txt 注意,PowerShell 里删除操作默认不走回收站,删了就没了。手别抖。
管道才是真正好用的地方
管道符号 | 把前一个命令的输出传给后一个命令处理。举个例子,列出当前运行的内存占用超过 100MB 的进程,按内存从大到小排:
Get-Process | Where-Object { $_.WorkingSet -gt 100MB} | Sort-Object WorkingSet -Descending $_ 代表管道里当前这个对象,WorkingSet 是进程占用的物理内存。这套写法比 CMD 的 tasklist 灵活太多。
再比如,找出系统里所有已停止的服务:
Get-Service | Where-Object { $_.Status -eq "Stopped"} 想直接把这些服务全启动?后面接一个 | Start-Service 就行。当然别随便这么干,有些服务停了是有原因的。
变量和循环,写脚本的基础
PowerShell 的变量以 $ 开头,不用声明类型:
$name = "张三" $age = 25 Write-Host "姓名:$name,年龄:$age" 循环用 foreach:
$fruits = @("苹果", "香蕉", "橘子") foreach ($f in $fruits) { Write-Host "水果:$f" } @() 是数组的写法。条件判断用 if,跟大多数编程语言差不多:
if ($age -ge 18) { Write-Host "成年人" } else { Write-Host "未成年" } 比较运算符有点特别:-eq 等于,-ne 不等于,-gt 大于,-lt 小于。= 在 PowerShell 里是赋值,不能拿来比较。
写个能用的脚本试试
把下面代码保存为 backup.ps1:
$source = "C:\工作文件" $dest = "D:\备份\$(Get-Date -Format 'yyyy-MM-dd')" New-Item -ItemType Directory -Path $dest -Force Copy-Item -Path "$source\*" -Destination $dest -Recurse Write-Host "备份完成:$dest" 这个脚本把“工作文件”文件夹里的内容复制到 D 盘按日期命名的备份目录里。$(Get-Date -Format 'yyyy-MM-dd') 会在运行时替换成当天日期,比如 2025-03-17。
运行脚本之前,系统默认禁止执行 .ps1 文件。需要改一下执行策略:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 这条命令只对当前用户生效,不会影响系统全局设置。改完之后 .\backup.ps1 就能跑了。
遇到问题怎么办
忘了某个命令怎么用,直接查:
Get-Help Copy-Item -Examples 想看某个命令返回的对象有哪些属性:
Get-Process | Get-Member 这招特别实用。管道后面能接什么,取决于前面输出的对象类型。Get-Member 把对象的属性和方法全列出来,照着挑就行。
PowerShell 上手不难,关键是别把它当 CMD 用。它的设计思路是面向对象的,命令之间传递的是对象,不是纯文本。理解这一点,后面的路就好走了。