将文件内容作为数组传递给循环

时间:2017-04-16 10:14:54

标签: arrays file loops powershell

我正在尝试将文件内容作为数组传递给循环,如下所示。我无法让它工作。是否可以使用PowerShell?

$cdnoutputFile文件包含以下数据:'1.1.1.1', '1.2.3.4', '2.2.2.2'

$getCDNoutputFile = Get-Content $cdnoutputFile
$pingAddress = @($getCDNoutputFile)

foreach ($ip in $pingAddress) {
    $ping = ping $ip
    $ping | Out-File $resultFile -Append
}

2 个答案:

答案 0 :(得分:1)

根据Ansgar的评论,最简单的解决方案是将输入文件编辑为每行一个IP,但如果不可行,则可以改为:

$pingAddress = ($getCDNoutputFile -split ",") -replace "'"

split创建了一个IP Addressea数组,替换删除了它们周围的单引号(通过在替换中定义没有第二个变量,我相信它会默认删除该字符)。

答案 1 :(得分:1)

我希望以下步骤可以帮助您

   $getCDNoutputFile = Get-Content $cdnoutputFile

#Finitializing
    $getCDNoutputFile="'1.1.1.1', '1.2.3.4', '2.2.2.2'";

    $tmp=$getCDNoutputFile -split ","

    foreach ($ip in $tmp){
    $ip=($ip -replace "'","").Trim(" ");
    $ping = ping $ip
    $ping | Out-File $resultFile -Append
    }

然而,使用powershell的Test-Connection代替使用window cmd的经典PING命令,是明智的选择,如果它符合您的要求

编辑:

test.txt包含 '1.1.1.1','1.2.3.4','2.2.2.2'

$getCDNoutputFile = Get-Content test.txt
$resultFile="ping.txt"
    $tmp=$getCDNoutputFile -split ",";

    foreach ($ip in $tmp){
    $ip=($ip -replace "'","").Trim(" ");
    $ping = ping $ip
    $ping | Out-File $resultFile -Append
    }