Powershell:从随机数组中获取最后一位数字

时间:2016-07-02 00:02:29

标签: powershell

我目前正在访问API并解析XML表以从3000多个系统中获取计算机ID。我得到ID并将它们存储在var $计算机中,我需要最后一个数字 ONLY 所以我可以使用开关将它们放入正确的组中。这就是我所拥有的;

foreach($ID in $Computers){

Switch ($ID){

    0{write-host "0"}
    1{write-host "1"}
    2{write-host "2"}
    3{write-host "3"}
    4{write-host "4"}
    5{write-host "5"}
    6{write-host "6"}
    7{write-host "7"}
    8{write-host "8"}
    9{write-host "9"}


}

}

由于隐私(我使用公司特定的URL),我在{}中编辑了实际命令。 ID编号的格式如“1”或“11”一直到“1111”。基本上,一行数字,最多4个数字。所有随机,并没有看似特别的顺序。我一直在谷歌搜索这几个小时,并且无法想出如何让它从ID中获取最后一个数字。任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:0)

简单回答:[-1]从字符串中获取最后一个字符。

$computers = '111', '23', '1567'

foreach ($ID in $computers) {   

    switch ($ID[-1]) {

       0 { write-host -ForegroundColor Cyan "0" }
       1 { write-host -ForegroundColor Cyan "1" }
       2 { write-host -ForegroundColor Cyan "2" }
       3 { write-host -ForegroundColor Cyan "3" }
       4 { write-host -ForegroundColor Cyan "4" }
       5 { write-host -ForegroundColor Cyan "5" }
       6 { write-host -ForegroundColor Cyan "6" }
       7 { write-host -ForegroundColor Cyan "7" }
       8 { write-host -ForegroundColor Cyan "8" }
       9 { write-host -ForegroundColor Cyan "9" }
    }
}

要么你花了几个小时谷歌搜索并没有找到 - > 你在一个月的午餐类型书或教程中迫切需要一个PowerShell。

或者,你有一些奇怪的格式ID。正则表达式很有趣,另一种方法可能是:

$computers = '111', '23', '1567'

switch -regex ($computers) {

   '.*0$' { write-host -ForegroundColor Cyan "0" }
   '.*1$' { write-host -ForegroundColor Cyan "1" }
   '.*2$' { write-host -ForegroundColor Cyan "2" }
   '.*3$' { write-host -ForegroundColor Cyan "3" }
   '.*4$' { write-host -ForegroundColor Cyan "4" }
   '.*5$' { write-host -ForegroundColor Cyan "5" }
   '.*6$' { write-host -ForegroundColor Cyan "6" }
   '.*7$' { write-host -ForegroundColor Cyan "7" }
   '.*8$' { write-host -ForegroundColor Cyan "8" }
   '.*9$' { write-host -ForegroundColor Cyan "9" }

}

示例输出:

Screenshot of example code's output

Switch语句将隐式循环遍历数组,调整regex以适合ID格式。

答案 1 :(得分:0)

根据埃里斯的评论,这对我有用。我没有提及并理解自己的问题是,我存储在$ ID var中的XML并没有我需要的数据。我需要将其解析为$ ID.id以从XML获取ID元素。所以我的每个人都很糟糕!!

foreach($ID in $Computers){
$Lastdigit = $ID.id % 10
Switch ($Lastdigit){

0{write-host "0"}
1{write-host "1"}
2{write-host "2"}
3{write-host "3"}
4{write-host "4"}
5{write-host "5"}
6{write-host "6"}
7{write-host "7"}
8{write-host "8"}
9{write-host "9"}

}