gpt4 book ai didi

PowerShell--使用 IP 地址和子网掩码计算网络 ID

转载 作者:行者123 更新时间:2023-12-01 21:46:01 25 4
gpt4 key购买 nike

我是 PowerShell 的新手。我正在编写一个脚本来使用 IP 地址和子网掩码计算网络 ID 和广播地址。我正在为逻辑与而苦苦挣扎。我的脚本要求用户提供 IP 和子网,然后将提示转换为二进制。然后我使用 for 循环来执行逻辑与。但是,那 '。'是 for 循环中输入的一部分,因此操作不起作用。我可以删除“。”吗?为了手术的目的?下面粘贴了我的一些代码。我确定有一个简单的解决方案,但我是初学者,因此不胜感激。谢谢!

$input = Read-Host "Would you like to calculate the Network Address? (Y for yes, N for no)"
if ($input -eq 'Y')
{
$ipAddress = Read-Host "Please enter your IP Address"
$ipBin = $ipAddress -split '\.'| ForEach-Object {[System.Convert]::ToString($_,2).PadLeft(8, '0')}
$ipBinJoin = $ipBin -join '.'
$subnetMask = Read-Host "Please enter your Subnet Mask"
$subnetBin= $subnetMask -split '\'| ForEach-object {[System.Convert]::ToString($_,2).PadLeft(8, '0')}
$subnetBinJoin = $subnetBin -join '.'
echo $ipAddress, $ipBinJoin
echo $subnetMask, $subnetBinJoin


for ($i = 0; $i -lt 32; $i++)
{
$networkIDBin = $ipBinJoin.Substring($i,1) -band $subnetBinJoin.Substring($i,1)
}

最佳答案

我们可以使用 IPV4 地址及其子网掩码计算网络 ID。我们可以在这里使用 -band(按位与)和一个有用的 .net 类型 IpAddress。

$ip = [ipaddress]$ipaddress
$subnet = [ipaddress]$subnetmask
$netid = [ipaddress]($ip.address -band $subnet.address)
write-host "Network id: $($netid.ipaddresstostring)"

旁注:验证 IP 地址的正则表达式可在 Validating IPv4 addresses with regexp 找到

计算广播地址https://community.idera.com/database-tools/powershell/powertips/b/tips/posts/calculate-broadcast-address

第一个地址是子网地址,第二个是广播地址。

关于PowerShell--使用 IP 地址和子网掩码计算网络 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60578612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com