需要PS脚本帮助。
要求:我想使用FTP将大文件复制到多个VM。我有多个带有C类子网的IP范围的FTP。 例如“10.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设置为变量。
实施例即可。如果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
}
答案 0 :(得分:0)
创建脚本如下。
$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)"
}
}