Foreach (Powershell) не работает должным образом - PullRequest
0 голосов
/ 28 мая 2018

Я новичок в скриптах Powershell.Я пытаюсь получить информацию о пользователе домена, такую ​​как информация об учетной записи, срок действия пароля / информация о блокировке, группы DL, почтовый ящик, группы безопасности (членом которых является пользователь) и т. Д. В окне графического интерфейса пользователя.

I 'Я не могу получить информацию об учетной записи / пароле, но не могу получить информацию о членстве в группе в текстовом поле.Я получаю только первую группу от членства в группе.Вот код:

$userinfo = (Get-aduser $user -Properties *)

"============================================================================================================"
"`t `t `t `t `t `t ACCOUNT DETAILS" 
"============================================================================================================"
$userinfo | fl DisplayName, EmailAddress, Enabled, Title, @{n="Manager";e={(Get-aduser -id $_.manager).name}},Department,@{n="Extension";e={$_.IPphone}}, TelephoneNumber, Created, Modified, UserPrincipalName, SamAccountName,@{n="Country";e={$_.co}}, Office, msExchWhenMailboxCreated   
"============================================================================================================"
"`t `t `t `t `t  PASSWORD/LOCKOUT DETAILS" 
"============================================================================================================"
$userinfo | fl LockedOut, PasswordExpired, lockoutTime, LastLogonDate , LastBadPasswordAttempt, PasswordLastSet, @{Name="Password Expires in (days)";Expression={(new-timespan -start $EndDate -end ([datetime]::FromFileTime((Get-aduser $user -Properties "msDS-UserPasswordExpiryTimeComputed")."msDS-UserPasswordExpiryTimeComputed"))).Days}}
"============================================================================================================"
"`t `t `t `t `t  Distribution Groups (AD)" 
"============================================================================================================"
$userinfo.memberof  | %{(get-adgroup -id $_ -Properties:groupcategory| ?{$_.groupcategory -match "Distribution" }).name}

А вот текстовое поле вывода.

введите описание изображения здесь

Кажется, что Foreach не являетсяработает правильно, показывая результат в текстовом поле.Дайте мне знать, если вам нужна дополнительная информация.

1 Ответ

0 голосов
/ 28 мая 2018
$userinfo = (Get-aduser $user -Properties *)

"============================================================================================================"
"`t `t `t `t `t `t ACCOUNT DETAILS" 
"============================================================================================================"
$userinfo | fl DisplayName, EmailAddress, Enabled, Title, @{n="Manager";e={(Get-aduser -id $_.manager).name}},Department,@{n="Extension";e={$_.IPphone}}, TelephoneNumber, Created, Modified, UserPrincipalName, SamAccountName,@{n="Country";e={$_.co}}, Office, msExchWhenMailboxCreated   
"============================================================================================================"
"`t `t `t `t `t  PASSWORD/LOCKOUT DETAILS" 
"============================================================================================================"
$userinfo | fl LockedOut, PasswordExpired, lockoutTime, LastLogonDate , LastBadPasswordAttempt, PasswordLastSet, @{Name="Password Expires in (days)";Expression={(new-timespan -start $EndDate -end ([datetime]::FromFileTime((Get-aduser $user -Properties "msDS-UserPasswordExpiryTimeComputed")."msDS-UserPasswordExpiryTimeComputed"))).Days}}
"============================================================================================================"
"`t `t `t `t `t  Distribution Groups (AD)" 
"============================================================================================================"
($userinfo.memberof | foreach { Get-ADGroup $_ } | Where {$_.GroupCategory -eq "Distribution"}).Name | FL

В последней строке теперь используется объект $userinfo, созданный в первой строке для членства пользователя, и выполняется соответствующее сравнение Where.

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

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