我有一个文件(.txt),内容的行格式如下:
<Name> <IPAddress>
例如,文件内容可以是:
Tampa Server 10.73.202.91
Hollywood Server 10.73.203.91
Coconut Server 10.73.204.91
Brighton Server 10.73.206.91
Bollywood Server 10.73.207.91
如何有效地将IP地址读取到阵列中?
答案 0 :(得分:1)
以上注释的意思是,当您刚接触PowerShell时,应该显示您的工作,研究的内容,有问题的地方等,以便其他人可以猜测您可能知道或不知道的内容。 / p>
例如,您知道如何读取文件,解析文件,使用正则表达式,pscustomobject等吗?
$datafile = @'
Tampa Server 10.73.202.91
Hollywood Server 10.73.203.91
Coconut Server 10.73.204.91
Brighton Server 10.73.206.91
Bollywood Server 10.73.207.91
'@
$data = $datafile -split "`n"
$data.count
$obj = @()
$data | % {
$line = $_
$matches = [regex]::Matches($line, "(.*)(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b)")
$obj += [pscustomobject]@{'Name'=$matches.Groups[1].Value.Trim(); 'IP'=$matches.Groups[2].Value;}
}
$obj
答案 1 :(得分:0)
这完成了工作。
$ServerAddressArray = @()
$file #Set to file path here
ForEach ($line in Get-Content $file)
{
$Columns = "ServerName", "IP"
$Data = ConvertFrom-csv -inputobject $line -Header $Columns -Delimiter "`t"
$ipAddress = $Data[0].IP.replace(' ', '');
$ipAddress = $ipAddress.replace('`t', '');
$ServerAddressArray+=$ipAddress
}
答案 2 :(得分:0)
您的文件使用多个空格作为Import-Csv
无法处理的定界符。
但是有一种解决方法,可以使用Get-Content
用单个字符替换这些空格
使用here字符串模拟文件
$Content = @"
Tampa Server 10.73.202.91
Hollywood Server 10.73.203.91
Coconut Server 10.73.204.91
Brighton Server 10.73.206.91
Bollywood Server 10.73.207.91
"@ -replace ' +(?=\d)','|'
$data = $Content | ConvertFrom-Csv -Header Name,IPAddress -Delimiter '|'
$data
# $data | Out-Gridview
# $data | Export-Csv '.\file.csv' -NoTypeInformation
类似于Korys的答案,但使用带前瞻性的正则表达式仅使用空格后跟(非消耗性)数字作为定界符。
到Gridview的输出以及到CSV文件的输出是可选的/已注释掉。
示例输出:
Name IPAddress
---- ---------
Tampa Server 10.73.202.91
Hollywood Server 10.73.203.91
Coconut Server 10.73.204.91
Brighton Server 10.73.206.91
Bollywood Server 10.73.207.91
答案 3 :(得分:0)
或者在内容上使用原始,拆分和合并...
(Get-Content -Path D:\Temp\ServerIpaList.txt -Raw) -split '\s+(?=\d)' -join ',' |
ConvertFrom-Csv -Header Name,IPAddress
Name IPAddress
---- ---------
Tampa Server 10.73.202.91
Hollywood Server 10.73.203.91
Coconut Server 10.73.204.91
Brighton Server 10.73.206.91
Bollywood Server 10.73.207.91