我正在尝试将文件内容作为数组传递给循环,如下所示。我无法让它工作。是否可以使用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
}
答案 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
}