从Powershell的参数中删除前导0

时间:2018-08-07 14:30:47

标签: powershell

Powershell的新手,在我开始这项工作之前从来不需要它。我为我提供了一种更轻松的方法,以保持我们的商店不断运转并消磨一些学习时间。一些借口;我们的商店始终是4个数字,所以1096是1096,而704是0704。

这是我当前的脚本:

$args.Length;
foreach ($arg in $args) {
Test-Connection $arg'router' }

Write-Host 'Pinging Store #'$arg

if($arg.legnth -lt 4) {
($arg).insert(0,'0') 
}

如果我使用参数 1096 执行,那么一切都很好,但是如果我使用 0704 前导0消失。我已经尝试了许多潜在的解决方案,但是我发现大多数人都在尝试删除尾随零,因此我一直在尝试对他们的解决方案进行反向工程。确保不删除前导0以便能够找到主机的最佳方法是什么。

0704路由器存在。

704router 不存在。

2 个答案:

答案 0 :(得分:2)

这似乎是您如何调用脚本的问题。您可能正在执行以下操作:

./MyScript.ps1 1096 0704

这将为您提供2个参数,但是由于它们未加引号并且仅包含数字,因此它们被解释为整数,因此您将丢失前导零。

相反,通过引用引号告诉PowerShell您希望这些为字符串值:

./MyScript.ps1 '1096' '0704'

答案 1 :(得分:0)

[string]$Args[1]为我工作, 行为似乎随着版本的变化而变化-相同的脚本无需进行PS 2.0

转换就可以工作

希望这会有所帮助!