我有一些想要以特定方式格式化的值。非常清楚,它是一个 IP 地址八位字节,我希望它采用“xxx”格式。例如,如果我的八位字节值为“20”,我想将其显示为“020”而不是“20”。
我最终将拥有一个充满 IP 的数组,并且我想正确格式化所有这些。
这是一个我知道有效的例子,我已经弄清楚这是一个整数。
$Test = 1
$Test.ToString("000")
001
这不起作用。我通过 Get-Member 发现该值已经是一个字符串。
$Test = "1"
$test.ToString("000")
Cannot find an overload for "tostring" and the argument count: "1".
At line:1 char:2
+ $test.tostring("000")
+ ~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest
关于如何获取已经是字符串格式的值的任何想法,就像我可以使用整数值一样?从长远来看,我希望示例 $test 实际上包含完整的 IP 地址。
例如 10.10.10.10 我想成为 010.010.010.010
回答 给有兴趣的人。通过使用@GregL 示例,我能够为带有前导零的完整 IP 格式组合一个工作示例,如下所示以供参考。
$Test = "10.10.10.10"
$test2 = ($test.Split(".") | ForEach-Object {$_.tostring().padleft(3, '0')}) -join "."
大概您正在尝试以这种方式格式化它们,以便它们都显示得很好。
唯一的问题是 020 和 20 不一样。反正不是这样。
文章说它只适用于 WINdows 2000 和 NT,但我只是在我的 Windows 7 PC 上尝试过它,它是同样的故事。
无论如何,要回答您最初的问题,请使用以下
PadLeft
方法:我使用Chris Dent 编写的这些出色的子网数学函数。以纯十进制(不是点分十进制)或纯二进制值存储您的地址列表。排序列表,然后检索列表,最后使用 ConvertTo-DottedDecimalIP 函数显示列表。他的博客中有很多其他很棒的子网功能。