100个Windows PowerShell神技:运维效率翻倍指南!
2025-09-23 09:21:36
RAIZ
告别重复操作,掌握这些命令让Windows管理行云流水。
在日常Windows运维工作中,你是否曾因反复点击图形界面而烦躁?是否因批量操作多台服务器而加班到深夜?PowerShell作为微软打造的自动化利器,已成为高效运维的核心技能。本文将分享100个经过实战检验的PowerShell命令,涵盖系统管理、网络配置、安全设置等八大场景,让你的运维效率实现质的飞跃。
一、系统管理核心命令(15个)
1. 获取全面系统信息: Get-ComputerInfo
一键获取操作系统版本、安装日期、BIOS详情等关键数据。2. 修改计算机名并重启: Rename-Computer -NewName "Server01" -Restart
主机名更改后自动重启生效。3. 加入域环境: Add-Computer -DomainName "corp.com" -Restart
简化加域操作流程。4. 获取服务状态: Get-Service
列出所有系统服务状态(运行/停止)。5. 启停关键服务: Start-Service -Name "Spooler"
或Stop-Service -Name "Spooler"
精准控制打印服务等。6. 设置服务启动类型: Set-Service -Name "Spooler" -StartupType Automatic
配置服务自动启动。7. 检索系统进程: Get-Process
显示所有运行中进程。8. 终止无响应进程: Stop-Process -Name "Notepad" -Force
强制结束指定进程。9. 事件日志查询: Get-EventLog -LogName System -Newest 50
获取最近50条系统日志。10. 按事件ID过滤日志: Get-WinEvent -FilterHashtable @{LogName='System'; ID=1074}
高效查询关机/重启记录。11. 查看已安装程序: Get-Package
列出所有通过包管理器安装的应用。12. 管理系统更新: Get-WindowsUpdate
(需PSWindowsUpdate模块)检查待安装更新。13. 设置电源计划: powercfg /setactive SCHEME_MIN
切换至最高性能模式。14. 重启远程服务器: Restart-Computer -ComputerName "Server01" -Force
强制重启指定主机。15. 关闭本地计算机: Stop-Computer -Force
强制立即关机。
二、文件与磁盘管理(12个)
16. 递归列出文件: Get-ChildItem -Path "C:\Logs" -Recurse
遍历目录及子目录内容。17. 按扩展名过滤文件: Get-ChildItem -Path "D:\" -Filter "*.log"
高效检索日志文件(比管道过滤快5倍)。18. 批量复制目录: Copy-Item -Path "C:\Data" -Destination "D:\Backup" -Recurse
递归备份文件夹。19. 安全删除文件: Remove-Item -Path "C:\Temp\*" -Recurse -Confirm:$false
强制清空临时目录。20. 计算文件哈希值: Get-FileHash "C:\ISO\image.iso" -Algorithm SHA256
验证文件完整性。21. 创建符号链接: New-Item -ItemType SymbolicLink -Path "C:\Link" -Target "D:\Target"
建立软链接。22. 监控文件夹变动: Get-ChildItem -Path "C:\Logs" | Where-Object { $_.LastWriteTime -gt (Get-Date).AddMinutes(-5) }
查找5分钟内修改的文件。23. 磁盘空间检查: Get-Volume
显示所有分区容量及剩余空间。24. 格式化磁盘: Format-Volume -DriveLetter D -FileSystem NTFS -Full -Force
快速格式化D盘。25. 磁盘碎片整理: Optimize-Volume -DriveLetter C -Defrag
优化机械硬盘性能。26. 挂载ISO镜像: Mount-DiskImage -ImagePath "D:\ISO\disk.iso"
虚拟光驱操作。27. 管理存储池: Get-StoragePool
查看软件定义存储配置。
三、网络配置与诊断(10个)
28. IP地址配置: Get-NetIPConfiguration
显示当前网络配置。29. 释放更新DHCP: Invoke-Command -ScriptBlock {ipconfig /release; ipconfig /renew}
刷新IP租约。30. DNS缓存清理: Clear-DnsClientCache
清除本地DNS缓存。31. 端口监听检测: Get-NetTCPConnection -State Listen
查看所有监听端口。32. 测试远程端口: Test-NetConnection -ComputerName "server01" -Port 3389
检测RDP端口连通性。33. 路由跟踪诊断: Test-NetConnection -ComputerName "google.com" -TraceRoute
网络路径跟踪。34. 防火墙规则管理: Get-NetFirewallRule | Where-Object Enabled -eq "True"
查看生效规则。35. 创建入站规则: New-NetFirewallRule -Name "AllowWeb" -DisplayName "HTTP" -Protocol TCP -LocalPort 80 -Action Allow
开放HTTP端口。36. 网络适配器启用: Enable-NetAdapter -Name "Ethernet"
激活网卡。37. 重置网络栈: Reset-NetAdapter -Name "*" -Confirm:$false
重启所有网卡(需管理员权限)。
四、活动目录管理(12个)
38. 创建AD用户: New-ADUser -Name "john.doe" -GivenName "John" -Surname "Doe"
快速新建账户。39. 批量导入用户: Import-Csv "users.csv" | ForEach-Object { New-ADUser -Name $_.samid -GivenName $_.firstname }
结合CSV自动化创建。40. 密码策略查询: Get-ADDefaultDomainPasswordPolicy
查看域密码复杂度要求。41. 解锁被锁账户: Unlock-ADAccount -Identity "john.doe"
解除账户锁定状态。42. 安全组管理: Get-ADGroup -Filter *
列出所有AD组。43. 添加用户到组: Add-ADGroupMember -Identity "Sales" -Members "john.doe"
分配组成员。44. 组策略强制更新: Invoke-GPUpdate -Computer "Client01" -Force
远程刷新组策略。45. OU创建与组织: New-ADOrganizationalUnit -Name "BranchOffice" -Path "DC=corp,DC=com"
新建组织单位。46. 计算机对象查找: Get-ADComputer -Filter "Name -like 'WS*'"
检索名称以WS开头的计算机。47. AD复制状态检查: Get-ADReplicationPartnerMetadata -Target "DC1"
诊断域控制器同步。48. 导出AD用户报表: Get-ADUser -Filter * -Properties * | Export-Csv "ADUsers.csv"
生成完整用户清单。49. 密码过期提醒: Get-ADUser -Filter * -Properties PasswordExpired | Where PasswordExpired -eq $true
查找密码过期账户。
五、安全与权限设置(10个)
50. 本地用户创建: New-LocalUser -Name "tempuser" -Description "Temporary account" -NoPassword
创建无密码本地账户。51. 本地用户列表: Get-LocalUser
查看所有本地账户。52. 权限提升请求: Start-Process PowerShell -Verb RunAs
以管理员身份启动新会话。53. 文件ACL查看: Get-Acl "C:\Secure" | Format-List
显示目录权限详情。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
为用户组添加读取权限。55. 审核策略配置: Auditpol /set /category:"Account Management" /success:enable
启用账户管理成功审核。56. BitLocker状态检查: Get-BitLockerVolume
查看驱动器加密状态。57. 启动安全模式: bcdedit /set {default} safeboot minimal
配置下次启动进入安全模式。58. 脚本执行策略: Set-ExecutionPolicy RemoteSigned
允许本地脚本运行。59. 证书导入操作: Import-PfxCertificate -FilePath "C:\cert.pfx" -CertStoreLocation Cert:\LocalMachine\My
安装PFX证书。
六、脚本与自动化技巧(15个)
60. ForEach循环优化: foreach ($file in (Get-ChildItem)) { ... }
比管道快10倍(适用于小数据集)。61. Where-Object过滤: Get-Process | Where-Object CPU -gt 50
筛选CPU>50%的进程。62. 定时休眠控制: Start-Sleep -Seconds 300
脚本暂停5分钟。63. 进度条显示: For ($i=1; $i -le 100; $i++) { Write-Progress -Activity "Processing" -PercentComplete $i; Start-Sleep -Milliseconds 50 }
可视化进度。64. 函数封装复用: function Get-DiskInfo { Get-Volume }
创建自定义函数。65. 错误自动处理: Try { ... } Catch { $_.Exception.Message | Out-File "error.log" }
捕获并记录异常。66. 脚本执行跟踪: Start-Transcript -Path "C:\Logs\script.log"
记录控制台输出。67. 参数化脚本: param($username) Write-Host "Hello, $username!"
支持运行时传参。68. 条件分支处理: if ((Get-Date).Hour -lt 12) { "Morning" } else { "Afternoon" }
根据时间返回问候语。69. 正则匹配提取: "Server: DB01" -match 'Server: (\w+)'; $matches[1]
提取DB01(比字符串分割快3倍)。70. CSV数据导入: $data = Import-Csv -Path "data.csv"
加载结构化数据。71. JSON解析处理: Get-Content "config.json" | ConvertFrom-Json
读取JSON配置文件。72. XML节点访问: [xml]$config = Get-Content "app.config"; $config.settings.port
获取端口配置。73. 计划任务创建: Register-ScheduledTask -Action (New-ScheduledTaskAction -Execute "powershell.exe" -Argument "C:\Scripts\backup.ps1") -Trigger (New-ScheduledTaskTrigger -Daily -At 2am)
创建每日备份任务。74. 计划任务触发: Start-ScheduledTask -TaskName "NightlyBackup"
手动执行任务。
七、远程与批量管理(11个)
75. 远程会话建立: Enter-PSSession -ComputerName "Server01"
进入交互式远程会话。76. 多机并行执行: Invoke-Command -ComputerName $servers -ScriptBlock { Get-Service }
批量获取服务状态。77. 文件分发传输: Copy-Item -Path "C:\installer.msi" -Destination "\\Server01\C$\Temp\" -ToSession (New-PSSession -ComputerName "Server01")
安全传输文件。78. 软件静默安装: Invoke-Command -ComputerName $computers -ScriptBlock { Start-Process msiexec.exe -ArgumentList "/i installer.msi /quiet" -Wait }
批量安装MSI包。79. 注册表批量修改: Invoke-Command -ComputerName $computers -ScriptBlock { Set-ItemProperty -Path "HKLM:\Software\MyApp" -Name "LogLevel" -Value "Verbose" }
统一修改注册表项。80. 远程服务重启: Invoke-Command -ComputerName $servers -ScriptBlock { Restart-Service -Name "WinRM" }
批量重启关键服务。81. 多机日志收集: Invoke-Command -ComputerName $computers -ScriptBlock { Get-EventLog -LogName System -EntryType Error } | Export-Csv "AllErrors.csv"
集中错误日志。82. 主机在线检测: Test-Connection -ComputerName $computers -Count 1 -Quiet -AsJob | Wait-Job | Receive-Job
并行Ping检测。83. 远程进程监控: Invoke-Command -ComputerName $servers -ScriptBlock { Get-Process -IncludeUserName }
获取带用户名的进程列表。84. 会话断开复用: New-PSSession -ComputerName "Server01" -Name "Srv01Session"
创建持久会话。85. 执行结果保存: $results = Invoke-Command -ComputerName $computers -ScriptBlock { ... } -AsJob | Wait-Job | Receive-Job
保存批量执行结果。
八、性能优化与资源管理(15个)
86. 内存释放: Clear-RecycleBin -Force
清空回收站释放空间。87. 事件日志清理: Limit-EventLog -LogName Application -MaximumSize 1GB
限制日志大小。88. 资源占用监控: Get-Counter '\Processor(_Total)\% Processor Time' -Continuous
实时CPU监控。89. 进程资源排序: Get-Process | Sort-Object CPU -Descending | Select -First 5
找出CPU占用前5进程。90. 模块加载优化: Import-Module ActiveDirectory -DisableNameChecking
跳过名称检查加速加载。91. 后台作业管理: Start-Job -ScriptBlock { Get-EventLog System -After (Get-Date).AddDays(-1) }
后台执行日志检索。92. 作业结果接收: Receive-Job -Id 1 -Keep
获取作业结果。93. 内存释放: [System.GC]::Collect()
强制执行垃圾回收(谨慎使用)。94. 禁用不必要服务: Set-Service -Name "Fax" -StartupType Disabled
停用传真服务。95. 计划任务禁用: Disable-ScheduledTask -TaskName "AdobeUpdate"
关闭非关键自动更新。96. 磁盘清理: CleanMgr /sageset:1 & CleanMgr /sagerun:1
自动执行磁盘清理。97. 系统文件检查: sfc /scannow
扫描并修复系统文件。98. DISM映像修复: DISM /Online /Cleanup-Image /RestoreHealth
修复Windows映像。99. 启动项管理: Get-CimInstance Win32_StartupCommand | Format-Table Command, User
查看所有启动项。100. 性能计数器导出: Get-Counter -Counter "\Memory\Available MBytes" | Export-Csv "mem.csv"
记录内存指标。
高效运维的三个黄金法则
1. 测试先行:任何可能造成系统变更的命令(特别是 Remove-Item
、Format-Volume
等)务必在测试环境验证2. 权限最小化:执行命令时使用所需的最低权限,避免直接使用Administrator账户进行常规操作 3. 日志追踪:关键操作始终通过 Start-Transcript
记录完整会话,或添加-Verbose
参数查看详细输出
真正的PowerShell高手不是记住了多少命令,而是懂得在Get-Help
、Get-Command
和搜索引擎间无缝切换。
系统管理员的价值不在于每天处理了多少工单,而在于通过自动化让自己从重复劳动中解放出来。这100个命令只是起点,将它们组合成解决实际问题的脚本,才是效率翻倍的关键。