首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PS脚本:将IP地址的前3位字节与IPArray匹配

PS脚本:将IP地址的前3位字节与IPArray匹配
EN

Stack Overflow用户
提问于 2018-04-23 22:51:40
回答 1查看 405关注 0票数 0

需要帮助PS脚本。

要求:我希望使用将大型文件复制到多个VM。我有带有C类子网的多个IP范围的FTP。例如:“10.10.10”、“10.11.10.10”、“10.10.12.10”、"10.10.10.13“(均为C类,子网为255.255.255 )。

脚本将在每个VM上本地执行。因此,我希望脚本匹配分配的IP的前3位字节(很少有VM有不同范围的多个IP ),然后从IP地址列表中选择FTP IP并将其设置为变量。

据我所知,我创建了包含所有FTP IP地址的IP数组。然后使用Win32_NetworkAdapterConfiguration获取IP地址、子网和网关的列表。我将Win32_NetworkAdapterConfiguration放到哈希表中,以便使用它进行比较。

需要帮助比较哈希表数据,从IP数组中获取匹配的IP地址,并将该FTP IP设置为变量。

Ex.如果VM A有IP 10.10.12.25,那么它应该使用10.10.12.10 FTP IP。

我需要使用Win32_NetworkAdapterConfiguration使脚本与运行PS v2的旧操作系统兼容。

代码语言:javascript
运行
复制
$FTPIPs = @("10.10.10.10","10.11.10.10""10.10.12.10","10.10.10.13")
$AllIPs = @()
foreach ($adapter in (Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName $env:COMPUTERNAME ))
        {
         $Prop = @{
                'IPAddress' = $adapter.IpAddress
                'SubnetMask' = $adapter.IPSubnet
                'DefaultGateway' = $adapter.DefaultIPGateway
         }      
$obj = New-Object -TypeName PSobject -Property $Prop
$AllIPs += $obj
        }
EN

回答 1

Stack Overflow用户

发布于 2018-05-03 20:14:01

创建脚本如下所示。

代码语言:javascript
运行
复制
$FTPIPs = @("10.10.10.10","10.11.10.10","10.10.12.10","10.10.10.13")
$Prop = @{
    'IPAddress' = '10.11.10.54'
    'SubnetMask' = '255.255.255.128'
    'DefaultGateway' = '10.11.10.1'
}
$LocalIP = New-Object -TypeName PSobject -Property $Prop

$FTPIPs |
ForEach-Object {
    If ((([IPAddress]$LocalIP.IPAddress).Address -band ([IPAddress]$LocalIP.SubnetMask).Address) -eq (([IPAddress]$_).Address -band ([IPAddress]$LocalIP.SubnetMask).Address)) {
        "$_ is in the same subnet as $($LocalIP.IPAddress)"
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49991006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档