Powershell 从每一行读取一些字符串

Powershell to read some strings from each line

我有这样的要求:

有一个包含以下模式的文本文件

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.
}

如何做到这一点?我知道要读取整个文件或获取一些特定的字符串。但我需要对每个 line.Any 帮助完成相同的操作,我们将不胜感激。

是这样的吗?您可以在 : 上拆分,然后根据索引

存储您的变量
$contents = Get-Content 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
}

小修改:"t" 内容缺失。

你可以写一个正则表达式来替换掉你不需要的部分

$ip_address= '172.26.xxy.zxy:Administrator:Password' -replace '^(.+):(.+):(.+)$',''
$user= '172.26.xxy.zxy:Administrator:Password' -replace '^(.+):(.+):(.+)$',''
$pwd= '172.26.xxy.zxy:Administrator:Password' -replace '^(.+):(.+):(.+)$',''

我认为更通用和纯粹的 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、用户和密码。因此,您现在可以将它们用于您的目的,或者只是在管道的末尾添加更多命令。