我试图通过PowerShell自动设置IP地址,我需要找出我的interfaceindex号码。
我得到的是:
$x = ( Get-NetAdapter |
Select-Object -Property InterfceName,InterfaceIndex |
Select-Object -First 1 |
Select-Object -Property Interfaceindex ) | Out-String
这将输出:
InterfaceIndex -------------- 3
现在出现问题,当我尝试使用以下方法仅获取数字时:
$x.Trim.( '[^0-9]' )
它仍然离开" InterfaceIndex"和下划线。这导致我的脚本的下一部分出错,因为我只需要数字。
有什么建议吗?
答案 0 :(得分:3)
这将完成你的工作:
( Get-NetAdapter | Select-Object -Property InterfceName,InterfaceIndex | Select-Object -First 1 | Select-Object -Property Interfaceindex).Interfaceindex
实际上你不需要两次选择属性:这样做:
( Get-NetAdapter |Select-Object -First 1| Select-Object -Property InterfceName,InterfaceIndex).Interfaceindex
答案 1 :(得分:2)
(Get-NetAdapter | select -f 1).Interfaceindex
默认选择属性没有意义。如果你想保持对象做:
(Get-NetAdapter | select -f 1 -ov 'variablename').Interfaceindex
其中f = first,ov = outvariable
$variablename.Interfaceindex
当您输出到屏幕时,您不需要Out-String
因为强制转换为字符串。如果你尝试使用这些数据,那么powershell就足够聪明,可以在需要时将它从int转换为字符串,反之亦然。
答案 2 :(得分:2)
回答您的直接问题:您可以删除变量中的所有数字,并删除不是数字(或更确切地说是数字)的所有内容:
$x = $x -replace '\D'
然而,更好的方法是首先不添加你想删除的内容:
$x = Get-NetAdapter | Select-Object -First 1 -Expand InterfaceIndex
PowerShell cmdlet通常会将对象作为输出生成,因此您不必将这些对象修改为字符串形式并切除多余的材料,而只需扩展您感兴趣的特定属性的值。