一、PowerShell 高效单行命令系统信息获取1. 查询 CPU 占用前五进程#按 CPU 使用率降序排序筛选出占用最高的 5 个进程。PSC:\Users\MATIGet-Process|Sort-ObjectCPU-Descending|Select-Object-First 52. 查看本机网络 IP 配置。Get-NetIPConfiguration优势: 以对象形式展示网卡、IPv4 地址、网关等信息可读性优于传统 ipconfig。3. 筛选正在运行的 Windows 相关服务假设我们只寻找名称中包含“Windows”一词且当前正在运行的服务。Get-Service|Where-Object{$_.Status-eqRunning-and$_.DisplayName-matchWindows}逻辑同时满足服务运 行中、名称包含 Windows两个条件筛选。4. 查看本地磁盘存储空间Get-PSDrive命令用于获取所有 PowerShell 驱动器。如果直接运行Get-PSDrive输出会包含多种类型的驱动器例如文件系统驱动器(如 C:, D:)注册表驱动器(如 HKLM:, HKCU:)证书存储驱动器(如 Cert:)环境变量驱动器(如 Env:)别名驱动器(如 Alias:)对于磁盘空间监控我们通常只关心物理硬盘或网络映射驱动器即文件系统驱动器。因此我们需要使用-PSProvider参数进行过滤指定提供程序为FileSystem。命令对比与解析# 查看所有 PowerShell 驱动器信息繁杂Get-PSDrive# 仅查看文件系统驱动器聚焦磁盘信息Get-PSDrive-PSProvider FileSystem输出示例与解读运行Get-PSDrive -PSProvider FileSystem后你将看到类似下面的表格NameUsed (GB)Free (GB)ProviderRootC120.5379.5FileSystemC:\D50.2449.8FileSystemD:\Name: 驱动器盘符如 C, DUsed (GB): 已用空间单位 GBFree (GB): 可用空间单位 GBProvider: 驱动器提供程序此处均为 FileSystemRoot: 驱动器的根路径实用技巧与扩展格式化输出使用Format-Table可以自定义显示的列和顺序。Get-PSDrive-PSProvider FileSystem|Format-TableName,{nUsed (GB);e{[math]::Round($_.Used/1GB,2)}},{nFree (GB);e{[math]::Round($_.Free/1GB,2)}},Root-AutoSize筛选特定驱动器结合Where-Object可以只查看剩余空间不足的驱动器。# 查看剩余空间小于 50GB 的驱动器Get-PSDrive-PSProvider FileSystem|Where-Object{$_.Free-lt50GB}导出到 CSV将磁盘信息导出为文件便于记录或分析。Get-PSDrive-PSProvider FileSystem|Export-Csv-PathDiskInfo.csv-NoTypeInformation通过Get-PSDrive -PSProvider FileSystem你可以快速、清晰地获取所有本地磁盘的存储空间使用情况这是系统维护和容量规划的基础操作。5. 查看系统最新 5 条错误日志这对于故障排查非常有用。我们使用Get-WinEvent。我们将使用一种称为哈希表的过滤来提高搜索效率。哈希表总是以艾特符号和花括号开始。Get-WinEvent-FilterHashtable {LogName System;Level 2}-MaxEvents 5参数说明System 系统日志、Level2 代表错误级别Maxevents限定仅展示 5 条记录。二、条件判断语句1. 基础 if 判断$number 10if($number-eq10){Write-HostThe number is exactly 10}常用比较运算符#-eq (Equals):checks if two values are equal#-ne(Not Equals):check if two values are not equal#-gt (Greater Than)checks if a values is greater than another#-ge(Greater Than or Equal): check if a value id greater than or equal to another#-lt(less than):checks if a value ia less than another#-le(less than or Equal):checks if a value is less than or equal to another3. 多分支 elseif 判断$ServiceStatusStoppedif($ServiceStatus-eqStopped){Write-HostService is Stopped}elseif($ServiceStatus-eqRunning){Write-HostService is Running}else{Write-HostService is unknow}有时我们还需同时检查多个文件这个时候我们就需要使用and(与)or(或)在这个条件中我们检查值A是否等于10并且B是否大于15.4. 多条件逻辑判断-and 与运算全部条件成立才生效-or 或运算任一条件成立即生效$valueA 10$valueB 20if(($valueA-eq10)-and($valueB-gt15)){Write-Hostand Condition:both the true.}if(($valueA-eq88)-or($valueB-eq20)){Write-Hostor Condition: At least one is true.}三、三大基础循环语法1. ForEach 遍历循环遍历数组内所有元素批量处理数据。定一个名为services的数组并添加三个服务名称$servicesBITS,Spooler,WinRMForEach($sin$services){Write-HostCheck service:$s}2. For 计数循环固定次数循环搭配计数器使用for($i 0;$i-lt3;$i){Write-HostProcessing item nmber$i}3. While 条件循环满足条件持续执行非常适合那些不清楚循环需要运行多少次但你知道循环停止条件的情况。$counter 0while($counter-lt5){Write-HostCurrent count:$counter.still waitting...Start-Sleep-Seconds 1$counter}四、总结单行查询命令可快速获取进程、网络、服务、磁盘、系统日志等系统信息运维排查效率高依靠比较运算符与逻辑符搭配 if多分支语句实现脚本逻辑判断ForEach、For、While 三种循环满足遍历、定量、条件重复执行等自动化场景需求。