我有一个要求:
以下列模式提供包含以下内容的文本文件
172.26.xxy.zxy:Administrator:Password
172.26.xxy.yyx:Administrator:Password
172.26.xxy.yyy:Administrator:Password
172.26.xxy.yxy:Administrator:Password
我需要我的powershell脚本来阅读每个单词并在需要时使用该单词。例如,
foreach(something)
{
I want the IP's(172.26.---.---) to read and store the value as a variable.
I want to store the two words after **:** in seperate variables.
}
如何做到这一点?我知道要读取整个文件或获取一些特定的字符串。但我需要在每一行都做同样的事情。非常感谢你的帮助。
答案 0 :(得分:2)
这样的东西?您可以在:
上拆分,然后根据索引存储变量
$contents = Get-Conent C:\your\file.txt
foreach($line in $contents) {
$s = $line -split ':'
$ip = $s[0]
$user = $s[1]
$pass = $s[2]
write-host $ip $user $pass
}
答案 1 :(得分:0)
您可以编写正则表达式来替换以删除不需要的部分
$ip_address= '172.26.xxy.zxy:Administrator:Password' -replace '^(.+):(.+):(.+)$','$1'
$user= '172.26.xxy.zxy:Administrator:Password' -replace '^(.+):(.+):(.+)$','$2'
$pwd= '172.26.xxy.zxy:Administrator:Password' -replace '^(.+):(.+):(.+)$','$3'
答案 2 :(得分:0)
我认为更通用和纯粹的Powershell方式是这样的:
Select-String "(.*):(.*):(.*)" c:\file.txt |
Select @{Name="IP"; Expression = {$_.Matches.Groups[1]}},
@{Name="User"; Expression = {$_.Matches.Groups[2]}},
@{Name="Password"; Expression = {$_.Matches.Groups[3]}}
输出将是一个对象数组,每个对象具有三个属性IP,用户和密码。因此,您现在可以将它们用于您的目的,或者只需在管道的末尾添加更多命令。