需要帮助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的旧操作系统兼容。
$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
}
发布于 2018-05-03 20:14:01
创建脚本如下所示。
$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)"
}
}
https://stackoverflow.com/questions/49991006
复制相似问题