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

Foreach(Powershell)没有';t似乎工作正常,powershell,Powershell,我是Powershell脚本编写新手。我试图在GUI框中检索域用户信息,如帐户信息、密码过期/锁定信息、DL组、邮箱、安全组(用户是其成员)等 我可以获取帐户/密码信息,但无法在文本框中获取组成员信息。我只是从小组成员中得到第一个小组。 下面是一个代码: $userinfo = (Get-aduser $user -Properties *) "===========================================================================

我是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}
这是输出文本框

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

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

我错了吗,还是您不填写变量
$miduser
?如果so
$miduser.memberof
为空,因此
Foreach对象
无需处理,对吗?@Olaf,它将是$userinfo而不是$miduser。当我在控制台上运行它或导出到csv时,它可以正常工作,但不能在文本框中运行。@TessellatingHeckler,我没有使用格式列表的输出。相反,我使用的是对象的memberof属性。在ise上运行或导出到csv时,相同的代码可以正常工作,但在windows窗体的文本框上不行。Adam,很抱歉它是$userinfo.memberof而不是$miduser.memberof。我提供了一个答案否,它仍然是一样的。将`| FL`添加到行的末尾我找到了一个解决方法。实际上,我在Try-and-Catch语句中使用了这段代码(包含Foreach),但并没有在Textbox中提供所需的输出。现在我用的是If和Else,效果很好。下次我将分享整个代码。谢谢:)