我正在学习PowerShell的基础知识,我有一个任务-创建pwsh脚本,它接受3个传入参数(所有参数都是必需的):
1.第一个参数,值ADDRESS_1,格式为x.x的IP地址
1.第二个参数,值ADDRESS_2,格式为x.x的IP地址
1.第三个参数,值掩码,值格式为x.x或xx(255.0.0.0或8)
此脚本应检查ADDRESS_1和ADDRESS_2是否属于同一网络。输出控制台中的结果为是或否。正如我在前面提到的,传入参数不允许接受无效参数,它应该显示错误。
谁能解释一下,我怎么才能做到这一点。我将非常感谢你的帮助。
4条答案
按热度按时间dgtucam11#
第一次阅读时,有些文档可能看起来令人印象深刻,所以这里有一个工作框架,可以帮助您学习和入门。
[ValidatePattern()]
和[ValidateScript()]
属性验证IPv4地址格式和有效值范围,如果不满足它们指定的条件,将抛出错误。在
Process
块中执行域比较,并对结果进行有条件的分支。我把这个留给你了。阅读评论中其他人提供的链接上的文档,同时仔细分析代码以了解其工作原理。
xxhby3vn2#
这是一个如何使用正则表达式验证模式来测试两个IP地址和网络掩码是否有效的示例。
然后使用网络掩码检查IP1和IP2是否在同一网络中
注意:
正如我在上面的评论中指出的,您可以使用[参数(强制,位置=0)][IPAddress]$IP1作为输入,而不是字符串
IP地址参数可以接受类似192.168的部分IP,并将其转换为192.0.0.168,这将导致不正确的验证-请勿使用IT
zpjtge223#
我找到了一个答案,脚本,带有奇怪的验证模式:
工作正常:
但当我使用网络前缀时,它总是给出TRUE。
如何修改脚本,以使用前缀?
6qqygrtg4#
根据我的评论。这些东西已经存在多年了,所以没有必要从头开始写,除非这是一项家庭作业,或者你正在强迫自己学习。
搜索是你的朋友。
'powershell ipv4 address range to cidr'
结果中的第一个命中...
https://www.kittell.net/code/powershell-ipv4-range
...和作者的例子:
Validate
代码来重构上面的代码。*