我需要能够将一系列数字仅打印为两位数。例如,01,02,03,04...10,11
。
这是我正在尝试的脚本:
# Define a range's upper bound dynamically (IRL via user input)
$upperBound = 18
# Create an array of numbers (indices).
1..$upperBound
我尝试使用“ {0:D2}”作为上述站点,但出现错误“无法转换值”:
1.."{0:D2}" -f $upperBound
我也尝试过这个
"{0:D2}" -f $upperBound
但是,它仅显示输入的一个数字,而不显示整个范围。例如,如果输入2,我将得到02。我希望它显示01,02。
除此之外,我希望此范围显示在服务器名称旁边。我有一个服务器列表,该范围必须附加到服务器名称上。示例:
server01
server02
答案 0 :(得分:1)
范围运算符(..
)仅对数字作为端点进行操作;为了格式化所得的数字数组,您必须在..
创建的数组元素上应用后处理:
注意:以下示例输出假定$upperBound
的值为3
。
使用PSv4 +语法:
PS> (1..$upperBound).ForEach({ '{0:D2}' -f $_ })
01
02
03
在PSv3-中,使用:
foreach ($ndx in 1..$upperBound) { '{0:D2}' -f $ndx } # same output as above.
要使格式化的“数字字符串”成为服务器名称的一部分:
PS> (1..$upperBound).ForEach({ 'server{0:D2}' -f $_ })
server01
server02
server03
要创建名称的 list 作为带有分隔符的单个字符串,请在结果数组上使用-join
运算符:
PS> (1..$upperBound).ForEach({ 'server{0:D2}' -f $_ }) -join ','
server01,server02,server03
在PSv3-中:
$(foreach ($ndx in 1..$upperBound) { 'server{0:D2}' -f $ndx }) -join ','
答案 1 :(得分:0)
$upperbound = 18
$totalArray = 1..$upperbound | foreach {$_.tostring('00')}
foreach ($server in (cat serverlist.txt)) {
$totalarray | foreach {"$server$_"}
}
将00替换为您希望0占据的位置
0 = 1,2,3等。
00 = 01、02、03等...
000 = 001、002、003等。
如果您要用逗号在一行中显示服务器数字,您可以这样做
$totalArray -join ','