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