【发布时间】:2017-06-02 14:32:12
【问题描述】:
我有以下命令:
$IP_start = $First.Substring(0, $First.LastIndexOf('.'))+ ".200"
$First 是一个 IP 地址,例如 192.168.0.1
我想把第四个八进制的 1 改成 200。
Write-Output $IP_start
给我正确的 IP 地址 192.168.0.200,但同时我得到以下错误:
Ausnahme beim Aufrufen von "Substring" mit 2 Argument(en): "Die Länge darf nicht kleiner 饰演 0 (null) sein。参数名称:长度”在 *ps1:31 Zeichen:3 + $IP_start = $First.Substring(0, $First.LastIndexOf('.'))+ ".200" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : ArgumentOutOfRangeException
英文翻译
使用 2 个参数调用“子字符串”时出现异常:“长度不能小于零。参数名称:长度”在 * ps1:31 个字符:3...
我认为一切正常,但错误消息让我很困扰。
//编辑:
有一个ip.txt,其中每一行都像“192.168.0.1; ABCDEF”
$txt = Get-Content ip.txt
$editline = foreach ($Data in $txt) {
$First, $Second = $Data -split ';' -replace '^\s*|\s*$'
$IP_start = $First.Substring(0, $First.LastIndexOf('.'))+ ".200"
Write-Output "modify ipaddr_first $IP_start"
}
$editline | Out-File "$output"
因此$first 是“192.168.0.1”,$second 是“ABCDEF”。
【问题讨论】:
-
$First.LastIndexOf('.')本身的结果是什么?我无法重现您的问题,所以有些不同。 LastIndex of 将返回 -1 如果它没有找到任何会导致问题的东西。您告诉我们 $first 是什么,但我们必须猜测您是如何填充它的。无论哪种情况,我都会说使用[ipaddress]类型来帮助解决这个stackoverflow.com/questions/30061062/… -
子字符串对问题很重要,所以它应该留在标题中。只是做一个糟糕的动词
-
你在解决什么问题?提取 IP 地址字符串的子字符串不会告诉您网络 ID(取决于网络掩码)。
-
我刚刚更新了我的开场白。我解释了 $first 是如何填充值的
标签: powershell substring ip-address lastindexof