已从Powershell中的参数中删除前导0

已从Powershell中的参数中删除前导0,powershell,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) { ($

刚加入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不存在。

这似乎是如何调用脚本的问题。您可能正在做这样的事情:

./MyScript.ps1 1096 0704
这将给你2个参数,但由于它们是不带引号的并且只包含数字,它们被解释为整数,所以你会丢失前导零

相反,请通过引用这些字符串值来告诉PowerShell您希望将其作为字符串值:

./MyScript.ps1 '1096' '0704'

[string]$Args[1]
对我和 行为似乎在从一个版本到另一个版本发生变化-使用
PS2.0


希望这有帮助

PowerShell正在将您的参数转换为整数,其中
704
0704
是等效的<代码>$arg.ToString(“0000”)门店编号来自哪里?你是如何把它们加入你的脚本的?你能告诉我们$args的内容吗?看起来PowerShell正在将其值用作整数。因此,让PowerShell知道您想将其用作字符串。这很有意义。我已经更新了我的问题,添加了几行,使事情更加清楚$arg是0704被转换为704,因为正如你们所说的,它被视为一个整数。一秒钟,将转换为字符串。这是我在Powershell中的第一个20分钟,这就是为什么我只使用$arg,而不是正确的方式。在大多数情况下,只有1个参数,但这个答案在上下文中对默认情况下如何将整数转换为字符串有很大帮助。我不想每次都手动输入“”,我发现的每个
ToString()
示例都非常复杂。您能否给出一个简短的示例,说明如何将所有参数变为字符串?@code如果您使用的是
$args
,那么这就是实现此目的的方法;打电话的时候你得把它们串起来。如果要使用完整参数,可以在参数定义中将它们转换为
[string]
,但这也会更改引用参数的其余代码。您是说在我当前脚本的状态下,无法将参数转换为字符串?@code我是说,在当前状态下,无法在将参数解释为整数之前强制将其解释为字符串。由于您知道门店编号的格式,因此可以在事后将其转换并用零填充:
“$arg”.PadLeft(4,'0')
@codehm,即。。令人惊讶的但是如果你有不止一个参数,它将把所有参数组成一个字符串
$stores=[string[]$args
应该在每个arg都是字符串的位置创建一个数组,然后可以使用
foreach
对其进行迭代。