从文本文件中拆分多个字符串以在 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
我是 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