别再只会dir和cd了!Windows 11/10下PowerShell的10个隐藏神技(附实战命令)

张开发
2026/4/19 16:48:30 15 分钟阅读

分享文章

别再只会dir和cd了!Windows 11/10下PowerShell的10个隐藏神技(附实战命令)
别再只会dir和cd了Windows 11/10下PowerShell的10个隐藏神技附实战命令如果你还在用dir和cd这些基础命令那真是浪费了PowerShell这个宝藏工具。作为Windows系统中最强大的命令行工具PowerShell远不止是一个简单的命令提示符替代品。它融合了脚本语言的灵活性和面向对象的设计理念能够处理从日常文件操作到复杂系统管理的各种任务。本文将带你探索10个鲜为人知但极其实用的PowerShell技巧让你的工作效率提升一个档次。1. 一键完成多步操作批量重命名与快速搜索1.1 智能批量重命名文件传统方式重命名多个文件需要一个个操作而PowerShell可以一次性完成。比如你想把当前目录下所有.jpg文件从IMG_001.jpg改为Vacation_001.jpgGet-ChildItem *.jpg | ForEach-Object { Rename-Item $_ -NewName (Vacation $_.Name.Substring(3)) }更高级的用法是使用正则表达式进行模式匹配重命名Get-ChildItem *.txt | Rename-Item -NewName { $_.Name -replace ^report_,final_ }提示可以先使用-WhatIf参数预览重命名效果确认无误后再执行实际重命名操作。1.2 快速搜索文件内容在大量文件中查找特定内容时Select-String命令比记事本的查找功能强大得多Get-ChildItem -Recurse -Include *.ps1,*.txt | Select-String error -CaseSensitive这个命令会递归搜索当前目录及子目录下所有.ps1和.txt文件查找包含error区分大小写的行。2. 管道与对象操作告别繁琐脚本2.1 对象化处理进程信息PowerShell最强大的特性之一就是它将所有输出都视为对象而非纯文本。比如获取进程信息Get-Process | Where-Object { $_.CPU -gt 100 } | Sort-Object -Property CPU -Descending | Select-Object -First 5这条命令会获取所有进程筛选CPU使用超过100的按CPU使用率降序排序只显示前5个2.2 复杂数据处理示例假设你需要分析日志文件中的IP访问频率Get-Content access.log | ForEach-Object { if($_ -match \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) { $matches[0] } } | Group-Object | Sort-Object -Property Count -Descending | Select-Object -First 103. 自定义函数与别名打造个人工具箱3.1 创建实用快捷命令将常用复杂命令封装为简单别名function Update-All { winget upgrade --all } Set-Alias update Update-All现在只需输入update就能更新所有已安装软件。3.2 保存常用函数到配置文件将自定义函数添加到PowerShell配置文件中使其永久可用if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force } notepad $PROFILE然后在打开的配置文件中添加你的自定义函数。4. 高级文件操作技巧4.1 快速比较两个文件夹差异$folder1 Get-ChildItem -Path C:\Folder1 -Recurse $folder2 Get-ChildItem -Path C:\Folder2 -Recurse Compare-Object -ReferenceObject $folder1 -DifferenceObject $folder2 -Property Name, Length4.2 批量修改文件编码将目录下所有.txt文件从ANSI转为UTF-8Get-ChildItem *.txt | ForEach-Object { $content Get-Content $_.FullName Set-Content -Path $_.FullName -Value $content -Encoding UTF8 }5. 系统管理与监控5.1 一键获取系统信息function Get-SystemInfo { $os Get-CimInstance Win32_OperatingSystem $cpu Get-CimInstance Win32_Processor $ram Get-CimInstance Win32_PhysicalMemory | Measure-Object -Property Capacity -Sum [PSCustomObject]{ OS $os.Caption Version $os.Version CPU $cpu.Name Cores $cpu.NumberOfCores RAM(GB) [math]::Round($ram.Sum / 1GB, 2) Uptime (Get-Date) - $os.LastBootUpTime } }5.2 监控文件夹变化实时监控某个文件夹的新增文件$watcher New-Object System.IO.FileSystemWatcher $watcher.Path C:\Monitor $watcher.IncludeSubdirectories $true $watcher.EnableRaisingEvents $true Register-ObjectEvent $watcher Created -Action { Write-Host New file detected: $($Event.SourceEventArgs.FullPath) }6. 网络相关实用命令6.1 快速测试端口连通性Test-NetConnection -ComputerName example.com -Port 4436.2 批量Ping测试检查多个服务器是否在线server1,server2,server3 | ForEach-Object { if (Test-Connection $_ -Count 1 -Quiet) { $_ is online } else { $_ is offline } }7. 数据处理与转换7.1 CSV文件高级操作从CSV导入数据并筛选Import-Csv data.csv | Where-Object { $_.Age -gt 30 } | Export-Csv filtered.csv -NoTypeInformation7.2 JSON处理将对象转换为JSON字符串Get-Process | Select-Object -First 5 | ConvertTo-Json从JSON字符串创建对象$json {name:John,age:30,city:New York} $person $json | ConvertFrom-Json $person.name8. 计划任务自动化8.1 创建定时任务每天上午9点运行脚本$action New-ScheduledTaskAction -Execute PowerShell.exe -Argument -File C:\Scripts\backup.ps1 $trigger New-ScheduledTaskTrigger -Daily -At 9am Register-ScheduledTask -TaskName DailyBackup -Action $action -Trigger $trigger8.2 查看现有任务Get-ScheduledTask | Where-Object { $_.State -eq Ready } | Format-Table TaskName,State9. 交互式帮助与学习9.1 探索命令用法Get-Command -Verb Get -Noun Process9.2 查看详细帮助Get-Help Get-Process -Full Get-Help Get-Process -Examples10. 安全与权限管理10.1 快速检查文件哈希值Get-FileHash C:\Downloads\installer.exe -Algorithm SHA25610.2 管理文件权限查看文件ACLGet-Acl C:\Important\file.txt | Format-List修改权限$acl Get-Acl C:\Important\file.txt $accessRule New-Object System.Security.AccessControl.FileSystemAccessRule(Users,Read,Allow) $acl.SetAccessRule($accessRule) Set-Acl -Path C:\Important\file.txt -AclObject $acl在实际工作中我发现最实用的技巧往往是最简单的那些。比如将常用命令保存为别名或者使用Select-String快速搜索日志文件。PowerShell的学习曲线可能有点陡峭但一旦掌握这些技巧你会发现它几乎能解决Windows系统上的任何问题。

更多文章