Powershell 将列表与具有指定标记的单独列表进行比较

Powershell 将列表与具有指定标记的单独列表进行比较,powershell,Powershell,我最近开始使用powershell,但尚未找到使用它的方法 我面临的问题如下: 我希望能够提供用户列表。 脚本必须检查每个用户并将其与不同的文件进行比较。 在不同的文件中,有一个带有标签的预定义用户名的完整列表。 例如: User1 Group1,Group2 User2 Group2 User3 Group 1,Group3 然后,我希望脚本检查每个用户是否存在于预定义列表中,如果存在,请检查其标签。 然后,我希望脚本输出用户拥有的标记,以便可以将其分配给单个或多个组 有什么建议吗?

我最近开始使用powershell,但尚未找到使用它的方法

我面临的问题如下:
我希望能够提供用户列表。
脚本必须检查每个用户并将其与不同的文件进行比较。
在不同的文件中,有一个带有标签的预定义用户名的完整列表。
例如:

User1 Group1,Group2  
User2 Group2  
User3 Group 1,Group3
然后,我希望脚本检查每个用户是否存在于预定义列表中,如果存在,请检查其标签。
然后,我希望脚本输出用户拥有的标记,以便可以将其分配给单个或多个组

有什么建议吗?
目前,该脚本已硬编码预定义的用户分组条目,因此在检查每个条目时浪费了大量时间


抱歉,如果这是stackoverflow的不当使用,如果是,请将提示转发给我,以便我可以学习。

您可以执行以下操作:

$user = 'User3'
$output = Get-Content file.txt | Where { $_.StartsWith($user) } |
    Select-Object @{n='User';e={$user}},@{n='Tags';e={$_ -replace '^\S+\s+'}}

# Output the Complete Object with Properties
$output

# Output the User
$output.User

# Output the Tags Comma-Delimited
$output.Tags

# Output the Tags as an Array

$output.Tags -split ','
如果数据列之间有一个公共分隔符,则可以减少操作

选择对象
此处使用计算属性(语法
@{n=property;e={expression}


-replace
使用正则表达式匹配字符串,然后执行替换
^\S+\S+
匹配以非空格开头的字符串和后面的任何空格。由于未提供替换字符串,因此会自动将其替换为空字符串。

如果该文件是纯文本文件,请使用
Get Content
将该文件加载到$Var中。然后遍历行并解析用户名和组名。如果文件是CSV文件,请使用
导入CSV
,然后迭代该文件。用户名将位于
.UserColumnName
中,组将位于各种
.GroupColumnName
属性中。