从列表中获取IP并使用powershell ping

时间:2017-10-31 03:33:45

标签: powershell

我有一个场景,我在log.ini文件中有以下详细信息

Hostname    : DLC1MQF
IP Address   : 10.210.208.102
Temporary IP : 10.212.215.91
Subnet Mask  : 255.255.248.0
Gateway      : 10.212.208.1

我想要做的只是从log.ini获取网关信息并对其进行ping操作,看看是否ping。如果不是,我必须写一个条件。那我怎么写呢?

我能写出这样的东西,但是我在修改gateway.txt输出时遇到了问题

$log = Get-Content C:\Windows\ImageLog.ini
foreach ($line in $log) {
if ($line -like "*Gateway*") {
$line | out-file -FilePath "C:\Windows\Gateway.txt"
}
}

1 个答案:

答案 0 :(得分:0)

试试这个:

$log = Get-Content C:\Windows\ImageLog.ini
$gateways = $log -like "*Gateway*"
foreach ($g in $gateways) {
    $ip = ($g -split ':')[1].Trim()
    ping $ip
    if (!$?) {
        $ip | Out-File -FilePath C:\Windows\Gateway.txt -Append
    }
}

$log -like "*Gateway*"提取网关线。

($g -split ':')[0]是“网关”

($g -split ':')[1]是“10.212.208.1”

Trim()System.String

的修剪方法

$?包含ping的结果。有关详细信息,请参阅about_Automatic_Variables

如果您想取消ping的输出,请运行ping $ip > $null

如果您要覆盖Gateway.txt,请从-Append cmdlet中删除Out-File切换参数。