Сравнение списка с отдельным списком с назначенными тегами - PullRequest
0 голосов
/ 17 января 2020

Я недавно начал с PowerShell, но пока не нашел пути к нему.

Проблема, с которой я сталкиваюсь, заключается в следующем:
Я хочу предоставить список пользователей. .
Сценарий должен проверять каждого пользователя и сравнивать его с другим файлом.
В другом файле содержится полный список предварительно определенных имен пользователей с тегами.
Например:

User1 Group1,Group2  
User2 Group2  
User3 Group 1,Group3

Затем я хочу, чтобы скрипт проверял для каждого пользователя, существует ли он в предопределенном списке, и если да, проверяет, какой у него есть тег.
Затем я хочу, чтобы скрипт выводил теги, которые есть у пользователя, чтобы он мог назначить его. к одной или нескольким группам.

Любые подсказки?
В настоящее время в скрипте есть жестко заданные предопределенные записи для групп пользователей, поэтому много времени тратится на проверку каждой записи.

Извините если это неправильное использование stackoverflow, если это так, пожалуйста, пришлите мне советы, чтобы я мог учиться.

1 Ответ

0 голосов
/ 17 января 2020

Вы можете сделать что-то вроде следующего:

$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 ','

Если у вас есть общий разделитель между столбцами данных, вы можете делать меньше манипуляций.

Select-Object здесь используется вычисляемый Свойства (синтаксис @{n=property;e={expression}}).

-replace использует регулярное выражение для сопоставления строки и затем выполняет замену. ^\S+\s+ соответствует строке, которая начинается с непустого пробела и любого следующего пробела. Поскольку строка замены не указана, она автоматически заменяется пустой строкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...