别再只会dir和cd了!Windows 11/10下PowerShell 7.x的10个高效命令与场景实战

张开发
2026/4/17 21:17:17 15 分钟阅读

分享文章

别再只会dir和cd了!Windows 11/10下PowerShell 7.x的10个高效命令与场景实战
Windows 11/10下PowerShell 7.x的10个高效命令与场景实战你是否还在Windows系统中反复点击鼠标完成文件操作是否还在为批量处理数据而苦恼PowerShell 7.x作为微软新一代命令行工具正在彻底改变Windows用户的工作方式。与传统的CMD相比它提供了更强大的对象处理能力与图形界面相比它能将复杂任务简化为一行命令。本文将带你超越基础的dir和cd探索10个真正能提升效率的PowerShell命令及其实际应用场景。1. 文件管理告别重复劳动1.1 批量重命名文件图形界面下重命名几十个文件是场噩梦而PowerShell只需一行Get-ChildItem *.jpg | ForEach-Object { Rename-Item $_ -NewName (vacation_2023_ $_.Name) }这行命令会获取当前目录所有jpg文件为每个文件添加vacation_2023_前缀保留原文件名后缀更复杂的重命名需求比如去除特定字符Get-ChildItem *.txt | Rename-Item -NewName { $_.Name -replace old_, }1.2 智能文件搜索Windows搜索太慢试试这个组合命令Get-ChildItem -Path C:\Projects -Recurse -File | Where-Object { $_.Name -like *report* -and $_.LastWriteTime -gt (Get-Date).AddDays(-30) } | Select-Object FullName, Length, LastWriteTime参数说明-Recurse搜索子目录-File只找文件不找文件夹-like模糊匹配文件名LastWriteTime30天内修改过的2. 系统管理一键掌控Windows2.1 服务管理三板斧查看所有正在运行的服务Get-Service | Where-Object Status -eq Running | Format-Table -AutoSize重启指定服务以Windows Update为例Restart-Service -Name wuauserv -Force设置服务启动类型Set-Service -Name wuauserv -StartupType AutomaticDelayedStart2.2 Windows功能开关查看已安装功能Get-WindowsOptionalFeature -Online | Where-Object State -eq Enabled启用/禁用功能如Hyper-VEnable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All3. 数据处理JSON和CSV的救星3.1 JSON处理从API获取数据并提取关键信息$weather Invoke-RestMethod -Uri https://api.weather.com/v1/location?citybeijing $weather.data | Select-Object temperature, humidity, windSpeed | ConvertTo-Json -Depth 5将JSON保存到文件$config { appName MyApp version 1.2.0 settings { theme dark notifications $true } } $config | ConvertTo-Json | Out-File config.json3.2 CSV高级操作合并多个CSV文件Get-ChildItem *.csv | Import-Csv | Export-Csv combined.csv -NoTypeInformation筛选并处理CSV数据Import-Csv sales.csv | Where-Object { [int]$_.Amount -gt 1000 } | Select-Object CustomerName,Product,Amount | Export-Csv high_value_sales.csv -NoTypeInformation4. 网络与远程管理4.1 网络诊断测试端口连通性Test-NetConnection -ComputerName example.com -Port 443获取详细网络配置Get-NetIPConfiguration -Detailed | Format-List4.2 远程执行命令在远程计算机上运行脚本Invoke-Command -ComputerName Server01 -ScriptBlock { Get-Process }建立持久会话$session New-PSSession -ComputerName Server01 Invoke-Command -Session $session -ScriptBlock { Get-Service } Remove-PSSession $session5. 日常效率提升技巧5.1 快速打开常用目录创建快捷命令function proj { Set-Location C:\Users\$env:USERNAME\Documents\Projects }现在只需输入proj就能直达项目目录。5.2 命令历史增强搜索历史命令Get-History | Where-Object CommandLine -like *service*重用历史命令Invoke-History -Id 155.3 定时任务自动化创建每天9点的备份任务$action New-ScheduledTaskAction -Execute powershell.exe -Argument Backup-Script.ps1 $trigger New-ScheduledTaskTrigger -Daily -At 9am Register-ScheduledTask -TaskName DailyBackup -Action $action -Trigger $trigger6. 模块化与复用6.1 创建自定义模块保存常用函数到MyTools.psm1function Get-DiskUsage { Get-Volume | Select-Object DriveLetter, SizeRemaining, Size } function Get-TopProcess { Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 }导入模块Import-Module .\MyTools.psm16.2 参数化脚本创建带参数的脚本FileCleanup.ps1param( [string]$Path ., [int]$DaysOld 30 ) Get-ChildItem -Path $Path -File | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$DaysOld) } | Remove-Item -WhatIf运行方式.\FileCleanup.ps1 -Path C:\Temp -DaysOld 77. 错误处理与日志7.1 优雅的错误处理try { Get-Content nonexistent.txt -ErrorAction Stop } catch { Write-Warning 文件读取失败: $_ $_.Exception | Format-List -Force } finally { Write-Output 操作完成 }7.2 记录操作日志Start-Transcript -Path C:\Logs\Script_$(Get-Date -Format yyyyMMdd).txt # 你的命令... Stop-Transcript8. 性能监控与优化8.1 实时资源监控Get-Counter \Processor(_Total)\% Processor Time,\Memory\Available MBytes -Continuous8.2 查找性能瓶颈Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 | Format-Table Name, CPU, PM, WS -AutoSize9. 安全与权限管理9.1 文件权限审计Get-ChildItem -Recurse | Get-Acl | Where-Object { $_.Access.IdentityReference -contains BUILTIN\Users } | Select-Object Path, AccessToString9.2 脚本执行策略查看当前策略Get-ExecutionPolicy -List临时允许脚本运行Set-ExecutionPolicy Bypass -Scope Process -Force10. 跨平台兼容技巧10.1 Linux命令兼容PowerShell 7.x原生支持许多Linux命令别名ls, cat, grep, curl, wget10.2 条件判断操作系统if ($IsWindows) { # Windows特有命令 } elseif ($IsLinux) { # Linux特有命令 }掌握这10类PowerShell命令后你会发现Windows下的工作效率提升了不止一个档次。从简单的文件操作到复杂的系统管理从本地数据处理到远程服务器控制PowerShell 7.x都能提供优雅的解决方案。记住真正的PowerShell高手不是记住所有命令而是理解如何组合它们解决实际问题。

更多文章