如何通过PowerCLI移除特定IP子网并生成合规CSV报告
解决PowerCLI脚本过滤特定子网IP的问题
原脚本实现了从名为DR的文件夹中获取虚拟机,筛选出微软系统的虚拟机后,导出包含HostName、IP、GuestFullName的CSV报告。现在需要移除172.25.X.X、169.X.X.X、20.X.X.X这几个子网的IP地址,修改后的脚本如下:
$VMs = Get-Folder -Name DR | Get-VM $VMs.ExtensionData.Guest | Where-Object {$_.GuestFullName -like "Microsoft*"} | Select-Object HostName, @{ Name='IP'; Expression={ [string]::Join(',',( $_.Net | ForEach-Object { $_.IpAddress | Where-Object { $_.Split('.').Count -eq 4 -and $_ -notmatch '^172\.25\.|^169\.|^20\.' } } )) } }, GuestFullName | Export-Csv C:\report.csv -NoTypeInformation -UseCulture
关键修改说明
在IP地址的处理逻辑中,新增了正则匹配过滤条件:$_ -notmatch '^172\.25\.|^169\.|^20\.',用来排除以下三类IP:
- 以
172.25.开头的子网(172.25.X.X) - 以
169.开头的自动私有IP(169.X.X.X) - 以
20.开头的子网(20.X.X.X)
同时保留了原有的$_.Split('.').Count -eq 4条件,确保只处理合法的IPv4地址。
执行修改后的脚本后,导出的CSV将符合你预期的格式,仅保留非目标子网的IP地址。
内容的提问来源于stack exchange,提问作者Arbelac
相关产品推荐
相关产品推荐

