Моей компании имеет скрипт для обработки лицензий на O365, и ток присваивает ту же страну для всех пользователей, таких какцикла ForEach-Object, содержащий Get-ADUser и фильтр
$Location = "US"
$E2Users = Get-ADGroupMember lg.o365.Office | Select SamAccountName
$E2Users | ForEach-Object{
$UPN = $E2Users[$Counter].SamAccountName + "@company.com"
Set-MsolUser -UserPrincipalName $UPN -UsageLocation $Location
##lots of other code
Мне нужно, чтобы получить страну каждого пользователя и использовать это, а не строку. Я настроил небольшой тест, чтобы убедиться, что у меня есть правильная страна, используя out-put, чтобы увидеть результаты, однако я не могу показаться, что обволакиваю ее, чтобы заставить ее работать. Я видел $ username = $ _ на другом форуме и пытался его использовать.
$E2Users = Get-ADGroupMember lg.o365.Office | Select SamAccountName
$E2Users | ForEach-Object{
$username = $_
$Location = Get-ADUSer -filter {samaccountname -like "*$username*"} -properties * | Select country
write-output $Location
}
Или мне нужен фильтр? Используя следующие данные, я получаю данные о странах, но как обеспечить их соответствие каждому пользователю. В некоторых результирующих строках были пробелы с использованием страны или c, и при проверке учетной записи пользователя эти атрибуты имеют значения.
$E2Users = Get-ADGroupMember lg.o365.Office.PlanK1 | Select SamAccountName
$E2Users | ForEach-Object{
$Location = Get-ADUSer -filter * -properties * | Select country
write-output $Location
}
Конечным результатом будет то, что выглядит следующим образом
$E2Users = Get-ADGroupMember lg.o365.Office | Select SamAccountName
$E2Users | ForEach-Object{
$UPN = $E2Users[$Counter].SamAccountName + "@company.com"
$Location = Get-ADUSer -filter {not sure what to use} -properties * | Select country
Set-MsolUser -UserPrincipalName $UPN -UsageLocation $Location
##lots of other code
Что я упускаю и не понимая. Спасибо за любую помощь.
Часть $ E2Users работает нормально. Вся проблема, с которой я сталкиваюсь, получает переменную $ Location. Поскольку цикл выполняется для каждого пользователя, я хочу получить страну или c, чтобы затем назначить $ Location, поэтому, когда запущен Set-MsolUser, он устанавливает правильную -UsageLocation. Если это имеет смысл? Это все о линии $ Location = Get-ADUSer -filter ........... Простой как $ E2Users | ForEach-Object { $ UsageLocation = Get-ADUSer -filter * -properties * | Выберите c –
Вам нужно будет добавить '-ExpandProperty' в select, который создает' $ E2users', или указать '$ username = $ _. Samaccountname', чтобы ваш цикл работал правильно. Вам нужно будет сделать то же самое с «Выбор страны» в вашем цикле. когда вы делаете выделение, поскольку вы создаете объект с одним свойством, вам нужно, чтобы свойство было присвоено переменной. –