Powershell 如何阅读姓名和姓名;文件中的IP地址?
我有一个文件(.txt),其内容的每行格式如下:Powershell 如何阅读姓名和姓名;文件中的IP地址?,powershell,Powershell,我有一个文件(.txt),其内容的每行格式如下: <Name> <IPAddress> 如何有效地将IP地址读入阵列?以上评论的意思是,您应该展示您的工作、您研究的内容、您有问题的地方等。因为您是PowerShell新手,所以其他人可以猜测您可能知道或不知道的内容 例如,您知道如何读取文件、解析文件、使用正则表达式、pscustomobject等吗 $datafile = @' Tampa Server 10.73.202.91 Hollywood
<Name> <IPAddress>
如何有效地将IP地址读入阵列?以上评论的意思是,您应该展示您的工作、您研究的内容、您有问题的地方等。因为您是PowerShell新手,所以其他人可以猜测您可能知道或不知道的内容 例如,您知道如何读取文件、解析文件、使用正则表达式、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
这就完成了工作
$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
}
您的文件使用多个空格作为分隔符,
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 answer类似,但使用带有前瞻的正则表达式,仅使用后跟(非消耗)数字的空格作为分隔符
输出到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
或者在内容上使用raw、split和join如何
(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
安德烈莫尔顿Thanks@Monku即使是问题也应该具有持久的价值,以便后续读者不会被否决/搁置。你可能应该(再一次)采取行动。
(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