Как получить псевдоним по электронной почте и CN для всех в рекламной группе, используя PowerShell
-
28-10-2019 - |
Вопрос
Я использую PowerShell с квестами объявлений.
Я могу использовать командлет get-qadgroupmember, чтобы получить список всех в данной группе. Пока все хорошо, но я хотел бы получить их псевдоним по электронной почте. Все, что возвращается в настоящее время, это что -то вроде:
Name Type DN
---- ---- --
Jane Doe User CN=Jane Doe,OU=Employee,DC=companyname,DC=com
Job Blow User CN=Joe Blow,OU=Employee,DC=companyname,DC=com
Я попытался использовать get -Qaduser с флагом -инкурсионным флагом, но я все еще получаю только возвратные поля, и я не знаю, как получить возвращенные данные, которые, как говорится в документации, кэшируется на компьютере.
Любая помощь будет оценена.
ОБНОВИТЬ
В итоге я использовал «SELECT», аналогичный ниже:
$everyone = Get-QADGroupMember "All employees" | select firstname, lastname, email
И это получило все, что мне было нужно, в множество хэш -стенков. В этот момент легко сделать все, что нужно, чтобы итерация через всех с кодом, как:
for ($i=0; $i -le $everyone .length-1; $i++)
{
write-host $everyone[$i].email
}
Мне потребовалось вечно, чтобы найти «». обозначения для вытягивания определенных значений из хэштата. Я провели проанализ, и это сработало, но я знал, что это не может быть правильным способом сделать это, и в конечном итоге нашел документацию по обозначениям DOT. Я надеюсь, что документирование этого здесь сэкономит кому -то еще!
Решение
Вы уверены, что это действительно не возвращает эту информацию? Вы пробовали завести команду в Get-Member
или же Format-List -Force *
? PowerShell может быть настроен, чтобы показать только несколько свойств элементов, а не все, что может быть здесь.
Вы можете выбрать свойства, используя Select-Object
или просто select
Если у вас есть, они там, хотя PowerShell не отображает их по умолчанию:
Some-Command | select Name, Type, DN, SomeOtherProperty
Вы можете увидеть это, например, с Get-ChildItem
слишком:
PS Home:\> gci *.ps1
Directory: C:\Users\Joey
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2011-04-27 18:50 169 format.ps1
-a--- 2011-04-26 18:36 1064 Untitled1.ps1
-a--- 2011-04-27 18:41 69 x.ps1
-a--- 2011-04-23 19:58 91 y.ps1
Нормальный вызов дает только четыре свойства: Mode
, LastWriteTime
, Length
а также Name
. Анкет Тем не менее, есть еще много, как Get-Member
шоу
PS Home:\> gci *.ps1|gm -MemberType Property
TypeName: System.IO.FileInfo
Name MemberType Definition
---- ---------- ----------
Attributes Property System.IO.FileAttributes Attributes {get;set;}
CreationTime Property System.DateTime CreationTime {get;set;}
CreationTimeUtc Property System.DateTime CreationTimeUtc {get;set;}
Directory Property System.IO.DirectoryInfo Directory {get;}
DirectoryName Property System.String DirectoryName {get;}
Exists Property System.Boolean Exists {get;}
Extension Property System.String Extension {get;}
FullName Property System.String FullName {get;}
IsReadOnly Property System.Boolean IsReadOnly {get;set;}
LastAccessTime Property System.DateTime LastAccessTime {get;set;}
LastAccessTimeUtc Property System.DateTime LastAccessTimeUtc {get;set;}
LastWriteTime Property System.DateTime LastWriteTime {get;set;}
LastWriteTimeUtc Property System.DateTime LastWriteTimeUtc {get;set;}
Length Property System.Int64 Length {get;}
Name Property System.String Name {get;}
Другие советы
Помните, что Select-Object снимает объект и генерирует новые.
Итак, в этом примере:
$test = get-qaduser atestuser | select-object name
$ test будет PscustomOmobject (System.Object), содержащий только имя.
Что вы хотите сделать с данными? Вывод в консоли ... в файл?
Я бы сделал что -то вроде этого:
get-qadgroupmember "domain users" | format-table name, displayname, email
Или же
get-qadgroupmember "domain users" | select-object name, displayname, email | Export-Csv c:\acsvfile.csv