100个Windows PowerShell神技:运维效率翻倍指南!

2025-09-23 09:21:36 RAIZ

 

告别重复操作,掌握这些命令让Windows管理行云流水。

在日常Windows运维工作中,你是否曾因反复点击图形界面而烦躁?是否因批量操作多台服务器而加班到深夜?PowerShell作为微软打造的自动化利器,已成为高效运维的核心技能。本文将分享100个经过实战检验的PowerShell命令,涵盖系统管理、网络配置、安全设置等八大场景,让你的运维效率实现质的飞跃。

一、系统管理核心命令(15个)

  1. 1. 获取全面系统信息Get-ComputerInfo 一键获取操作系统版本、安装日期、BIOS详情等关键数据。
  2. 2. 修改计算机名并重启Rename-Computer -NewName "Server01" -Restart 主机名更改后自动重启生效。
  3. 3. 加入域环境Add-Computer -DomainName "corp.com" -Restart 简化加域操作流程。
  4. 4. 获取服务状态Get-Service 列出所有系统服务状态(运行/停止)。
  5. 5. 启停关键服务Start-Service -Name "Spooler" 或 Stop-Service -Name "Spooler" 精准控制打印服务等。
  6. 6. 设置服务启动类型Set-Service -Name "Spooler" -StartupType Automatic 配置服务自动启动。
  7. 7. 检索系统进程Get-Process 显示所有运行中进程。
  8. 8. 终止无响应进程Stop-Process -Name "Notepad" -Force 强制结束指定进程。
  9. 9. 事件日志查询Get-EventLog -LogName System -Newest 50 获取最近50条系统日志。
  10. 10. 按事件ID过滤日志Get-WinEvent -FilterHashtable @{LogName='System'; ID=1074} 高效查询关机/重启记录。
  11. 11. 查看已安装程序Get-Package 列出所有通过包管理器安装的应用。
  12. 12. 管理系统更新Get-WindowsUpdate(需PSWindowsUpdate模块)检查待安装更新。
  13. 13. 设置电源计划powercfg /setactive SCHEME_MIN 切换至最高性能模式。
  14. 14. 重启远程服务器Restart-Computer -ComputerName "Server01" -Force 强制重启指定主机。
  15. 15. 关闭本地计算机Stop-Computer -Force 强制立即关机。

二、文件与磁盘管理(12个)

  1. 16. 递归列出文件Get-ChildItem -Path "C:\Logs" -Recurse 遍历目录及子目录内容。
  2. 17. 按扩展名过滤文件Get-ChildItem -Path "D:\" -Filter "*.log" 高效检索日志文件(比管道过滤快5倍)。
  3. 18. 批量复制目录Copy-Item -Path "C:\Data" -Destination "D:\Backup" -Recurse 递归备份文件夹。
  4. 19. 安全删除文件Remove-Item -Path "C:\Temp\*" -Recurse -Confirm:$false 强制清空临时目录。
  5. 20. 计算文件哈希值Get-FileHash "C:\ISO\image.iso" -Algorithm SHA256 验证文件完整性。
  6. 21. 创建符号链接New-Item -ItemType SymbolicLink -Path "C:\Link" -Target "D:\Target" 建立软链接。
  7. 22. 监控文件夹变动Get-ChildItem -Path "C:\Logs" | Where-Object { $_.LastWriteTime -gt (Get-Date).AddMinutes(-5) } 查找5分钟内修改的文件。
  8. 23. 磁盘空间检查Get-Volume 显示所有分区容量及剩余空间。
  9. 24. 格式化磁盘Format-Volume -DriveLetter D -FileSystem NTFS -Full -Force 快速格式化D盘。
  10. 25. 磁盘碎片整理Optimize-Volume -DriveLetter C -Defrag 优化机械硬盘性能。
  11. 26. 挂载ISO镜像Mount-DiskImage -ImagePath "D:\ISO\disk.iso" 虚拟光驱操作。
  12. 27. 管理存储池Get-StoragePool 查看软件定义存储配置。

三、网络配置与诊断(10个)

  1. 28. IP地址配置Get-NetIPConfiguration 显示当前网络配置。
  2. 29. 释放更新DHCPInvoke-Command -ScriptBlock {ipconfig /release; ipconfig /renew} 刷新IP租约。
  3. 30. DNS缓存清理Clear-DnsClientCache 清除本地DNS缓存。
  4. 31. 端口监听检测Get-NetTCPConnection -State Listen 查看所有监听端口。
  5. 32. 测试远程端口Test-NetConnection -ComputerName "server01" -Port 3389 检测RDP端口连通性。
  6. 33. 路由跟踪诊断Test-NetConnection -ComputerName "google.com" -TraceRoute 网络路径跟踪。
  7. 34. 防火墙规则管理Get-NetFirewallRule | Where-Object Enabled -eq "True" 查看生效规则。
  8. 35. 创建入站规则New-NetFirewallRule -Name "AllowWeb" -DisplayName "HTTP" -Protocol TCP -LocalPort 80 -Action Allow 开放HTTP端口。
  9. 36. 网络适配器启用Enable-NetAdapter -Name "Ethernet" 激活网卡。
  10. 37. 重置网络栈Reset-NetAdapter -Name "*" -Confirm:$false 重启所有网卡(需管理员权限)。

四、活动目录管理(12个)

  1. 38. 创建AD用户New-ADUser -Name "john.doe" -GivenName "John" -Surname "Doe" 快速新建账户。
  2. 39. 批量导入用户Import-Csv "users.csv" | ForEach-Object { New-ADUser -Name $_.samid -GivenName $_.firstname } 结合CSV自动化创建。
  3. 40. 密码策略查询Get-ADDefaultDomainPasswordPolicy 查看域密码复杂度要求。
  4. 41. 解锁被锁账户Unlock-ADAccount -Identity "john.doe" 解除账户锁定状态。
  5. 42. 安全组管理Get-ADGroup -Filter * 列出所有AD组。
  6. 43. 添加用户到组Add-ADGroupMember -Identity "Sales" -Members "john.doe" 分配组成员。
  7. 44. 组策略强制更新Invoke-GPUpdate -Computer "Client01" -Force 远程刷新组策略。
  8. 45. OU创建与组织New-ADOrganizationalUnit -Name "BranchOffice" -Path "DC=corp,DC=com" 新建组织单位。
  9. 46. 计算机对象查找Get-ADComputer -Filter "Name -like 'WS*'" 检索名称以WS开头的计算机。
  10. 47. AD复制状态检查Get-ADReplicationPartnerMetadata -Target "DC1" 诊断域控制器同步。
  11. 48. 导出AD用户报表Get-ADUser -Filter * -Properties * | Export-Csv "ADUsers.csv" 生成完整用户清单。
  12. 49. 密码过期提醒Get-ADUser -Filter * -Properties PasswordExpired | Where PasswordExpired -eq $true 查找密码过期账户。

五、安全与权限设置(10个)

  1. 50. 本地用户创建New-LocalUser -Name "tempuser" -Description "Temporary account" -NoPassword 创建无密码本地账户。
  2. 51. 本地用户列表Get-LocalUser 查看所有本地账户。
  3. 52. 权限提升请求Start-Process PowerShell -Verb RunAs 以管理员身份启动新会话。
  4. 53. 文件ACL查看Get-Acl "C:\Secure" | Format-List 显示目录权限详情。
  5. 54. 批量权限分配$acl = Get-Acl "C:\Share"; $ace = New-Object System.Security.AccessControl.FileSystemAccessRule("Users","Read","Allow"); $acl.SetAccessRule($ace); Set-Acl -Path "C:\Share" -AclObject $acl 为用户组添加读取权限。
  6. 55. 审核策略配置Auditpol /set /category:"Account Management" /success:enable 启用账户管理成功审核。
  7. 56. BitLocker状态检查Get-BitLockerVolume 查看驱动器加密状态。
  8. 57. 启动安全模式bcdedit /set {default} safeboot minimal 配置下次启动进入安全模式。
  9. 58. 脚本执行策略Set-ExecutionPolicy RemoteSigned 允许本地脚本运行。
  10. 59. 证书导入操作Import-PfxCertificate -FilePath "C:\cert.pfx" -CertStoreLocation Cert:\LocalMachine\My 安装PFX证书。

六、脚本与自动化技巧(15个)

  1. 60. ForEach循环优化foreach ($file in (Get-ChildItem)) { ... } 比管道快10倍(适用于小数据集)。
  2. 61. Where-Object过滤Get-Process | Where-Object CPU -gt 50 筛选CPU>50%的进程。
  3. 62. 定时休眠控制Start-Sleep -Seconds 300 脚本暂停5分钟。
  4. 63. 进度条显示For ($i=1; $i -le 100; $i++) { Write-Progress -Activity "Processing" -PercentComplete $i; Start-Sleep -Milliseconds 50 } 可视化进度。
  5. 64. 函数封装复用function Get-DiskInfo { Get-Volume } 创建自定义函数。
  6. 65. 错误自动处理Try { ... } Catch { $_.Exception.Message | Out-File "error.log" } 捕获并记录异常。
  7. 66. 脚本执行跟踪Start-Transcript -Path "C:\Logs\script.log" 记录控制台输出。
  8. 67. 参数化脚本param($username) Write-Host "Hello, $username!" 支持运行时传参。
  9. 68. 条件分支处理if ((Get-Date).Hour -lt 12) { "Morning" } else { "Afternoon" } 根据时间返回问候语。
  10. 69. 正则匹配提取"Server: DB01" -match 'Server: (\w+)'; $matches[1] 提取DB01(比字符串分割快3倍)。
  11. 70. CSV数据导入$data = Import-Csv -Path "data.csv" 加载结构化数据。
  12. 71. JSON解析处理Get-Content "config.json" | ConvertFrom-Json 读取JSON配置文件。
  13. 72. XML节点访问[xml]$config = Get-Content "app.config"; $config.settings.port 获取端口配置。
  14. 73. 计划任务创建Register-ScheduledTask -Action (New-ScheduledTaskAction -Execute "powershell.exe" -Argument "C:\Scripts\backup.ps1") -Trigger (New-ScheduledTaskTrigger -Daily -At 2am) 创建每日备份任务。
  15. 74. 计划任务触发Start-ScheduledTask -TaskName "NightlyBackup" 手动执行任务。

七、远程与批量管理(11个)

  1. 75. 远程会话建立Enter-PSSession -ComputerName "Server01" 进入交互式远程会话。
  2. 76. 多机并行执行Invoke-Command -ComputerName $servers -ScriptBlock { Get-Service } 批量获取服务状态。
  3. 77. 文件分发传输Copy-Item -Path "C:\installer.msi" -Destination "\\Server01\C$\Temp\" -ToSession (New-PSSession -ComputerName "Server01") 安全传输文件。
  4. 78. 软件静默安装Invoke-Command -ComputerName $computers -ScriptBlock { Start-Process msiexec.exe -ArgumentList "/i installer.msi /quiet" -Wait } 批量安装MSI包。
  5. 79. 注册表批量修改Invoke-Command -ComputerName $computers -ScriptBlock { Set-ItemProperty -Path "HKLM:\Software\MyApp" -Name "LogLevel" -Value "Verbose" } 统一修改注册表项。
  6. 80. 远程服务重启Invoke-Command -ComputerName $servers -ScriptBlock { Restart-Service -Name "WinRM" } 批量重启关键服务。
  7. 81. 多机日志收集Invoke-Command -ComputerName $computers -ScriptBlock { Get-EventLog -LogName System -EntryType Error } | Export-Csv "AllErrors.csv" 集中错误日志。
  8. 82. 主机在线检测Test-Connection -ComputerName $computers -Count 1 -Quiet -AsJob | Wait-Job | Receive-Job 并行Ping检测。
  9. 83. 远程进程监控Invoke-Command -ComputerName $servers -ScriptBlock { Get-Process -IncludeUserName } 获取带用户名的进程列表。
  10. 84. 会话断开复用New-PSSession -ComputerName "Server01" -Name "Srv01Session" 创建持久会话。
  11. 85. 执行结果保存$results = Invoke-Command -ComputerName $computers -ScriptBlock { ... } -AsJob | Wait-Job | Receive-Job 保存批量执行结果。

八、性能优化与资源管理(15个)

  1. 86. 内存释放Clear-RecycleBin -Force 清空回收站释放空间。
  2. 87. 事件日志清理Limit-EventLog -LogName Application -MaximumSize 1GB 限制日志大小。
  3. 88. 资源占用监控Get-Counter '\Processor(_Total)\% Processor Time' -Continuous 实时CPU监控。
  4. 89. 进程资源排序Get-Process | Sort-Object CPU -Descending | Select -First 5 找出CPU占用前5进程。
  5. 90. 模块加载优化Import-Module ActiveDirectory -DisableNameChecking 跳过名称检查加速加载。
  6. 91. 后台作业管理Start-Job -ScriptBlock { Get-EventLog System -After (Get-Date).AddDays(-1) } 后台执行日志检索。
  7. 92. 作业结果接收Receive-Job -Id 1 -Keep 获取作业结果。
  8. 93. 内存释放[System.GC]::Collect() 强制执行垃圾回收(谨慎使用)。
  9. 94. 禁用不必要服务Set-Service -Name "Fax" -StartupType Disabled 停用传真服务。
  10. 95. 计划任务禁用Disable-ScheduledTask -TaskName "AdobeUpdate" 关闭非关键自动更新。
  11. 96. 磁盘清理CleanMgr /sageset:1 & CleanMgr /sagerun:1 自动执行磁盘清理。
  12. 97. 系统文件检查sfc /scannow 扫描并修复系统文件。
  13. 98. DISM映像修复DISM /Online /Cleanup-Image /RestoreHealth 修复Windows映像。
  14. 99. 启动项管理Get-CimInstance Win32_StartupCommand | Format-Table Command, User 查看所有启动项。
  15. 100. 性能计数器导出Get-Counter -Counter "\Memory\Available MBytes" | Export-Csv "mem.csv" 记录内存指标。

高效运维的三个黄金法则

  1. 1. 测试先行:任何可能造成系统变更的命令(特别是Remove-ItemFormat-Volume等)务必在测试环境验证
  2. 2. 权限最小化:执行命令时使用所需的最低权限,避免直接使用Administrator账户进行常规操作
  3. 3. 日志追踪:关键操作始终通过Start-Transcript记录完整会话,或添加-Verbose参数查看详细输出

真正的PowerShell高手不是记住了多少命令,而是懂得在Get-HelpGet-Command和搜索引擎间无缝切换。

系统管理员的价值不在于每天处理了多少工单,而在于通过自动化让自己从重复劳动中解放出来。这100个命令只是起点,将它们组合成解决实际问题的脚本,才是效率翻倍的关键。


我要咨询