Я не являюсь системным администратором / PowerShell как таковым, но у меня возникли проблемы с тем, чтобы этот запрос Powershell работал.
Необходимо вернуть всех пользователей в определенную группу безопасности Windows и отформатировать их определенным образом (показано ниже), однако у меня возникают некоторые проблемы с определением того, почему мой фильтр для групп безопасности не работает, и мне интересно, есть ли что-то не так с тем, как я настройте фильтр.
#фрагмент
$searcher.filter = "(&(memberof=CN=My Windows Security Group,OU=SecurityGroups,OU=Messaging,OU=Enterprise,DC=****,DC=****)(objectCategory=*)) "
$результаты = $searcher.findall()
У меня есть точка останова, настроенная в PowerShell ISE, однако $results не содержит никаких значений во время отладки.
Я смоделировал это из существующего скрипта от коллеги, где похоже, что он запрашивает DL, и я вижу значения $results при отладке этого:
#--------------------------------------------- --------
Пример фильтра #DL (работает)
#--------------------------------------------- --------
$Searcher.Filter = "(&(memberOf=CN=DL_TestApp_Admin,OU=Списки рассылки,OU=Обмен сообщениями,OU=Enterprise,DC=dcInfo,DC=dcInfo,DC=****)(objectCategory=*))"
$результаты = $searcher.findall()
Вот весь скрипт PS (модифицированный мной), который фильтрует группы безопасности Windows
$curdate = (Get-Date).ToString("MMddyyyy")
$baseDN = "LDAP://"
$Searcher = New-Object DirectoryServices.DirectorySearcher
$searcher.searchroot = новый объект system.directoryservices.directoryentry($basedn)
#--------------------------------------------- --------
#Групповой фильтр безопасности Windows (не работает)
#--------------------------------------------- --------
$searcher.filter = "(&(memberof=CN=My Windows Security Group,OU=SecurityGroups,OU=Messaging,OU=Enterprise,DC=****,DC=****)(objectCategory=*)) "
$результаты = $searcher.findall()
#--------------------------------------------- --------
#Построить набор данных в определенном формате
#--------------------------------------------- --------
$usercsv = $результаты | #-Объект {
New-Object -TypeName PSObject -Property @{
"Идентификатор пользователя" = $_.properties['samAccountName'][0]
"Роль пользователя" = "Бла"
"Повышенная роль" = "Y"
"Внутренний пользователь" = "Д"
"Дата последнего входа" = $null
«Специфическая информация о приложении 1» = $ null
«Специфическая информация о приложении 2» = $ null
«Дата создания учетной записи» = $null
"Дата последней смены пароля" = $null
"Адрес электронной почты пользователя" = $_.properties['mail'][0]
"Имя пользователя" = $null
"Фамилия пользователя" = $null
«Специфическая информация о приложении 3» = $ null
"Группа обзора" = $null
}
}
#экспорт в csv
$usercsv | Select-Object -Property «Идентификатор пользователя», «Роль пользователя», «Роль с повышенными правами», «Внутренний пользователь», «Дата последнего входа в систему», «Информация о приложении 1», «Информация о приложении 2», «Дата создания учетной записи». ","Дата смены последнего пароля","Адрес электронной почты пользователя","Имя пользователя","Фамилия пользователя","Специфическая информация о приложении 3","Группа проверки" | Export-Csv -NoTypeInformation -Path "UsersListing_$curdate.csv"
Write-Host "Написал", $results.Count, "запись(и)"
#удаление последнего CR LF
#TODO: Переместите это в общую функцию в отдельном скрипте для всех
скрипты для вызова
$stream = [IO.File]::OpenWrite("UsersListing_$curdate.csv")
$stream.SetLength($stream.Length - 2)
$поток.Закрыть()
$поток.Dispose()
Первоначально я написал это для запуска в конвейере выпуска DevOps Poweshell следующим образом для создания файла csv:
$Members = Get-ADGroup -Filter {Name -eq "WSG"} -Properties Member |
Select-Object -ExpandProperty Member
$GlobalCatalog = "$((Get-ADDomainController -Discover).Name):xxxx"
$output = Foreach ($User в $Members)
{
Get-ADUser -Identity $User -Server $GlobalCatalog -Properties CN,
EmailAddress, AccountExpirationDate, Created, HomePage, LastLogonDate,
PasswordLastSet при создании | CN выбора объекта,
SamAccountName, EmailAddress, AccountExpirationDate, Created, Enabled,
Домашняя страница, LastLogonDate, Name, PasswordLastSet, UserPrincipalName,
когда создан
}
#выходной CSV-файл
$ вывод | Export-Csv $Env:TEMP\Users.csv -NoTypeInformation
В этом случае выходной формат не имел значения, и я не уверен, что могу изменить этот запрос, чтобы вывести результаты в этот формат:
"Идентификатор пользователя" = $_.properties['samAccountName'][0]
"Роль пользователя" = "Бла"
"Повышенная роль" = "Y"
"Внутренний пользователь" = "Д"
"Дата последнего входа" = $null
«Специфическая информация о приложении 1» = $ null
«Специфическая информация о приложении 2» = $ null
«Дата создания учетной записи» = $null
"Дата последней смены пароля" = $null
"Адрес электронной почты пользователя" = $_.properties['mail'][0]
"Имя пользователя" = $null
"Фамилия пользователя" = $null
«Специфическая информация о приложении 3» = $ null
"Группа обзора" = $null
И результаты этого запроса находятся в этом конкретном формате:
Китай:
SamAccountName:
Адрес электронной почты :
Дата действия учетной записи:
Созданный :
Включено :
Домашняя страница :
Дата последнего входа в систему:
Имя :
Последний пароль:
UserPrincipalName :
когда создано:
Спасибо заранее за любую помощь.