从文本文件中拆分多个字符串以在 powershell 中创建数组

Split multiple strings from a text file to create an array in powershell

我是 Powershell ISE 的新手,我不知道该怎么做。

我想获取字符串(uxxxx axxxx 名称电子邮件)并将其 return 作为具有用户名、管理员和名称的 table(希望最终自动发送电子邮件)。 我的代码目前是这样的:

$users = Get-Content ".\FileName.txt"
$line = "Username, Admin, Name, Email"
$parts = $line.Split(" ")

  $Test = Foreach ($user in $users) {
          Select-Object Username, Admin, Name
          }
  $Test | Sort-Object -Property Name | Out-GridView

这只是代码的简化版本,因为它将通过域和身份验证过程,但我希望有人可以帮助我让 table 现在工作。

对于您所展示的内容,John Doe 部分意味着您无法使用 Import-Csv 或在 space 上轻松拆分,而无需在之后重新组装该列。

我在想:在 spaces 上从左侧拆分两次,然后与字符串的其余部分一起从右侧找到最后一个 space 并在其周围挑选出来。让 John Doe 专栏拥有尽可能多的 space。 (这只有在您可以保证用户名、管理员名称和电子邮件中永远不会包含 space 时才有效。如果不止一列可能包含 space,您没有明显的方法来判断spaces 作为列分隔符,来自 spaces 作为数据)。

$rows = Get-Content -Path '.\FileName.txt'

$users = foreach ($r in $rows) {

    # Take 2 columns from the left, and store the rest        
    $user, $admin, $rest = $r.Split(' ', 3)

    # Walk back from the right to the first space
    # and pick either side of it
    $i = $rest.LastIndexOf(' ')
    $name = $rest.Substring(0, $i)
    $email = $rest.Substring($i+1)

    # Build an output that can work with Out-GridView
    [PSCustomObject]@{
        Username = $user
        Admin    = $admin
        Name     = $name
        Email    = $email
    }
}

$users | Out-GridView