Foreach(Powershell)似乎没有正常工作

时间:2018-05-27 23:47:41

标签: powershell

我是Powershell脚本的新手。我正在尝试在GUI框中检索域用户信息,如帐户信息,密码过期/锁定信息,DL组,邮箱,安全组(用户是其成员)等。

我可以获取帐户/密码信息,但无法在文本框中获取组成员资格信息。我只是从小组成员中获得第一组。 这是一个代码:

$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}

这是输出文本框。

enter image description here

在文本框中显示结果时,Foreach似乎无法正常工作。如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

$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语句的结果属性区分大小写。我不确定为什么你只收到一个结果,而不是其他结果。