У меня есть .TXT уникальных отображаемых имен (всего 9). Я просто заполняю массив и просматриваю его. Он возвращает все каждый дважды.
#Display names list path
$DnPath = "C:\dirname\filname.txt"
#Display names array
$DnArr = get-content -path $DnPath
$DnArr | Foreach-Object {
Get-Mguser -search displayname:$_ -ConsistencyLevel eventual -Property id | Select-Object -Property id
}
Это приводит к (каждый идентификатор дважды)
0eaba174-fab6-4cda-bf09-92391d586d48
15fb3a43-d8a1-4348-8e31-8f5814a38a69
1f08022d-85ba-40ba-9b79-c201c8f477b0
30792149-52da-44ec-9709-1911244bb183
6a4290f2-6397-4d58-9d20-e0b46a7d5d3d
714d794c-3e43-40a8-b752-ed04b2748016
a032dc91-28e6-49f4-bcea-1bbacf2f1a00
cfcf7c8a-5cfa-4362-ae7f-bad6bb1f4b66
e9704b2c-dbdd-4654-89a0-defe38bcadb7
6a4290f2-6397-4d58-9d20-e0b46a7d5d3d
cfcf7c8a-5cfa-4362-ae7f-bad6bb1f4b66
e9704b2c-dbdd-4654-89a0-defe38bcadb7
714d794c-3e43-40a8-b752-ed04b2748016
30792149-52da-44ec-9709-1911244bb183
15fb3a43-d8a1-4348-8e31-8f5814a38a69
1f08022d-85ba-40ba-9b79-c201c8f477b0
0eaba174-fab6-4cda-bf09-92391d586d48
a032dc91-28e6-49f4-bcea-1bbacf2f1a00
Чтобы получить идентификаторы пользователей путем передачи текстового файла, измените сценарий, как показано ниже:
$DnPath = "C:\dirname\filename.txt"
$DnArr = Get-Content -Path $DnPath
$UniqueUserIds = @()
foreach ($displayName in $DnArr) {
# Get user ID using the display name
$user = Get-MgUser -Filter "displayName eq '$displayName'" -Property id
if ($user) {
$UniqueUserIds += $user.Id
}
}
$UniqueUserIds = $UniqueUserIds | Select-Object -Unique
$UniqueUserIds
Мои текстовые файлы выглядят следующим образом:
Вместо -Filter
лучше использовать -Search
. При использовании -Search
входная строка, которую вы указываете после displayName
, разбивается на части с помощью пробелов, разных регистров или типов символов (цифр и специальных символов) и возвращает всех пользователей, где displayName
содержит текущую строку.
$DnArr | Foreach-Object {
Get-Mguser -Filter "displayname eq '$_'" -ConsistencyLevel eventual -Property id | Select-Object -Property id
}
При использовании -Filter
будут возвращены только пользователи с точным displayName
.
Спасибо @user2250152. Очень хорошее понимание.